题解 | 质因数的个数
#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,说明这些因子中都找完了,根据乘法的规律,最多一个大于根号的因子,可以知道必然这个数就是他的最后一个因子。

