题目
对于任意给定的一个正整数,计算其因数个数。
输入样例:
6
输出样例:
4
说明:
1、2、3、6都是6的因数。因此,输出4。
输入输出:
输入正整数N。6
输出N的因子个数。4
数据范围限制:
1<=N<2^31
分析:
如果让除数从1-N,或者1-N/2循环,时间复杂度都会太高,所以,我们取N的平方根,比如36,那么它的平方根就是6,从1开始到六,36%1==0 &&36/1 != 1,所以此时多了两个因子,36/6 ==6,所以此时因子数+1。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
using namespace std;
int main(){
int x, i, n = 0;
cin>>x;
for(i = 1; i <= sqrt(x); ++i){
if(x % i == 0 && x / i != i){
n += 2;
} if (x % i == 0 && x / i == i){
n += 1;
}
}
cout<<n<<endl;
return 0;
}