#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
const int MAX = 100010;
int N;
int p[MAX] = {0};
int Prime[MAX], cnt = 0;
void getPrime(int X)
{
for(int i=2, j; i<X; i++)
{
if(!p[i])
{
Prime[cnt++] = i;
for(j=i+i; j<X; j+=i) p[j] = 1;
}
}
}
int main()
{
getPrime(MAX);//求素数表
while(scanf("%d", &N) != EOF)
{
int sqr = (int)sqrt(1.0*N), num = 0;
for(int i=0; Prime[i]<=sqr; i++)//求质因子个数
{
while(N%Prime[i] == 0)
{
num++;
N /= Prime[i];
}
}
if(N != 1) num++;//若最后X不为1,说明还有一个质因子
printf("%d\n", num);
}
return 0;
}
【清华大学考研机试题】质因子个数
最新推荐文章于 2023-08-06 11:40:18 发布