AcWing 3380. 质因数的个数
原题链接
简单
#include<bits/stdc++.h>
using namespace std;
int n,k,siz;
const int N = 5e4+10;
bool prime1[N];
int prime2[N];
void init(){
k = sqrt(N);
prime1[1] = true;
for(int i = 2;i<k;i++){
if(prime1[i])continue;
for(int j = 2*i;j<N;j+=i){
prime1[j] = true;
}
}
for(int i = 1;i<N;i++){
if(!prime1[i])prime2[++siz]=i;
}
}
int main() {
init();
while (cin >> n) {
int cnt = 0;
for (int i = 1; prime2[i] <= n / prime2[i]; i++) {
while (n % prime2[i] == 0) {
cnt++;
n /= prime2[i];
}
}
if (n > 1) cnt++;
cout << cnt << endl;
}
return 0;
}