文章
61
粉丝
137
获赞
18
访问
40.0k
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int str[N] = {0}; //0表示是素数
int primenumber[N];
int pncount = 0;
int main(){
int n;
str[0] = 1;
str[1] = 1;
//预先求出N以内的素数
for(int i = 2 ;i <= sqrt(N) ;i++){
if(str[i] == 0){
primenumber[pncount++] = i;
for(int j = 2 ;i*j < N ;j++)
str[i*j] = 1;
}
}
while(cin >> n){
int num = 0;
for(int i = 0 ;i < pncount ;i++){
if(n == 1) break; //质因数分解完了
while(n % primenumber[i] == 0){
num++;
n /= primenumber[i];
}
}
if(n != 1)
num++;
cout << num << endl;
}
return 0;
}
登录后发布评论
N最大是10^9,这个题不需要素数筛选,直接判定就可以