#约数的个数
题目描述
输入n个整数,依次输出每个数的约数的个数
输入描述:
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
输出描述:
可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。
这个题主要是要用开平方的方式来降低时间复杂度;假设x=a*a,那个x的两个约数必然是一个小于等于a,另一个大于等于a,所以用开平方的话,时间复杂度最小,如果除以2,那么运行时间会长很多;如果采用两个除数相乘来判断是否为约数(即采用两个for循环嵌套),那么会超出运行时间
利用余数是否为0来判断是否为约数,如果是0,且该除数的平方不等于被除数,那么约数+2,如果等于除数,那么约数+1(两个约数相同只算一个)
c++开平方函数:sqrt(x) (x为被开平方的数字),开平方未必就是整数,如果比较的对象是整数,可以进行强制类型转换,即int(sqrt(x))
#include<iostream>
#include<string>
#include<math.h>
using namesp