题解 | 质因数的个数

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

全部评论

相关推荐

牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务