文章
85
粉丝
0
获赞
580
访问
17.1k
#include <bits/stdc++.h>
using namespace std;
const int maxn =10001;
int prime[maxn]={1};
void predeal() {
for (int i = 0; i < maxn; i++) {
prime[i] = 1;
}
// 0和1不是素数
prime[0] = prime[1] = 0;
// 埃氏筛法
for (int i = 2; i <= sqrt(maxn); i++) {
if (prime[i] == 1) { // 如果i是素数
for (int j = i * i; j < maxn; j += i) {
prime[j] = 0; // 将i的倍数标记为合数
}
}
}
}
int main() {
int n;
predeal();
while (scanf("%d",&n)!=EOF) {
int counts =0;
for (int i = 2; i <= n && i < maxn; i++) {
if (prime[i] == 1) {
while (n % i == 0) {
counts++;
n /= i;
// 去掉break,继续除直到不能整除
}
}
}
if (n>1) {
counts++;
}
cout << counts << endl;
}
}
登录后发布评论
暂无评论,来抢沙发