题解 | 质因数的个数

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

全部评论

相关推荐

owwhy:难,技术栈在嵌入式这块显得非常浅,并且简历有大问题。教育经历浓缩成两行就行了,写什么主修课程,说的不好听这块没人在意,自我评价删了,项目写详细点,最终简历缩成一页。相关技能怎么说呢,有点差了,还写成这么多行
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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