题解 | 质因数的个数
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main(){
int n;
while(cin>>n){
int ans=0;
for(int i=2;i<=sqrt(n);i++){
while(n%i==0){
ans++;
n/=i;
}
if(n<=1)break;
}
if(n>1)ans++;
cout<<ans<<endl;
}
}
根据表达式分析,可以发现,从最小的质因数开始,如果持续的消去这个因数,那么之后所有该因数的倍数都会被消去,然后我们往下就会自动的跳过非质数,最后退出,假如退出的时候,不是1,说明这些因子中都找完了,根据乘法的规律,最多一个大于根号的因子,可以知道必然这个数就是他的最后一个因子。

小天才公司福利 1159人发布