题解 | #质因数的个数#
质因数的个数
http://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n;
int ans = 0;
while(cin >> n)
{
// n中最多只包含一个大于sqrt(n)的质因子
for(int i = 2; i <= n / i; i ++)
{
// n中不包含2到i-1的质因子,且i中也包含2到i-1的质因子
// 因此满足该条件时, i必然是质数
if(n % i == 0)
{
// 试除法
while (n % i == 0)
{
n /= i;
ans ++;
}
}
}
// 单独处理, 加1即可
if(n > 1) ans ++;
cout << ans << endl;
}
return 0;
}