质因数个数

质因数的个数

http://www.nowcoder.com/questionTerminal/20426b85f7fc4ba8b0844cc04807fbd9

/*
 * 质因数个数(使用到质数筛法)
 */
#include <iostream>
#include <cstdio>
#include <vector>
#include <math.h>

using namespace std;

const int MAXN = 1e5;

bool isPrime[MAXN];                 //标记数组
vector<int> prime;                  //保存质数

void initial(){                     //初始化
    fill(isPrime,isPrime+MAXN,true);
    isPrime[0]=false;
    isPrime[1]=false;
    for(int i = 2;i<MAXN;i++){
        if(!isPrime[i]){            //非质数,则跳过该数
            continue;
        }
        prime.push_back(i);
        for(int j = i+i;j<MAXN;j+=i){
            isPrime[j]=false;       //质数的倍数为非质数
        }
    }
    return;
}

int main(){
    initial();
    int n;
    int sqr = (int)sqrt(1.0*n);
    while(scanf("%d",&n)!=EOF){
        if(n==1){
            printf("1\n");
        }
        int sum = 0;
        for(int i = 0;i<prime.size();i++){
            int cursum=0;
            int factor = prime[i];
            if(n<factor){
                break;
            }
            while(n%factor==0){
                cursum++;
                n = n/factor;
            }
            sum+=cursum;
        }
        if(n>1){
            sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}
全部评论

相关推荐

02-18 21:55
门头沟学院 Java
拍打星:谁说的,焦虑只是一种心理状态,啥都不干也可以焦虑,不如说很多人就是因为啥都不干才导致焦虑感加重
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务