文章
35
粉丝
0
获赞
183
访问
5.9k
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 9; //其实1e5好像就够有点忘记了,开多点保险一些
int prime[N];
bool is_prime[N];
void get_prime()
{
is_prime[0] = is_prime[1] = false;
for(int i = 2; i < N; i ++)
{
if(is_prime[i]){
prime[++ prime[0]] = i;
}
for(int j = 1; j <= prime[0]; j ++)
{
if(prime[j] * i > N) break;
is_prime[prime[j] * i] = false;
if(i % prime[j] == 0) break;
}
}
} //模板
int main() {
memset(prime, 0, sizeof(prime));
memset(is_prime, true, sizeof(is_prime));
get_prime();
int n;
while(cin >> n)
{
int temp = n; int cnt = 0;
for(int i = 1; i <= prime[0]; i ++)
{
if(temp == 1) break; //为1结束,之前以为是0
while(temp % prime[i] == 0){
cnt ++;
temp /= prime[i];
}
}
if(temp != 1) cnt ++; //temp不是1说明本身是一个很大的质因子
cout << cnt << '\n';
}
}
登录后发布评论
暂无评论,来抢沙发