题解 | #质因数的个数#

质因数的个数

https://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9

#include <iostream>
#include <cmath>
using namespace std;


const int N=sqrt(1e+9);//N=31622
bool prime[31623];

void Initial()
{
    for(int i=0;i<=N;i++)
    {
        prime[i]=true;
    }
    prime[0]=false;
    prime[1]=false;
    for(int i=2;i<=N;i++)
    {
        if(prime[i]==false)continue;
        for(int j=i*2;j<=N;j+=i)
        prime[j]=false;
    }
}

int main() {
    Initial();//本题也可以不用求prime数组
    int n;
    while (cin >> n) { 
        int bound=sqrt(n);
        int count=0;

 /*       for(int i=2;(i<=bound)&&(prime[i]==1);i++)//不能这样,一旦prime[4]不满足条件之后就会跳出循环
        {
            while(n%i==0)
            {
                count++;
                n/=i;
            }

        }
*/         
            for(int i=2;i<=bound;i++)
        {
            if(prime[i]==false)continue;//其实本题也用不到这句话
            while(n%i==0)
            {
                count++;
                n/=i;
            }

        }
        if(n>1)count++;

        cout<<count<<endl;
    }
}

全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
牛客5655:其他公司的面试(事)吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务