题目:求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=22235,共有5个质因数。
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int N;
while(cin >> N) {
int res = 0;
for(int i = 2; i <= sqrt(N); i++) {
while(N % i == 0) {
N /= i;
res++;
}
if(N == 1) break;
}
cout << res + 1 << endl;
}
return 0;
}
x(x≥2)能够被小于根号x的质数分解,所以把x用质数2多次分解后能够保证下次可能整除x的数只能为3。这样就无需判断每个整除的数是否为质数。