//i不要写成j,全局变量不要定义多次
#include <stdio.h>
int prime[100001];
bool mark[100001];
int PrimeSize;
void init()
{
PrimeSize=0;
for(int i=2;i<=100000;i++)//from 2
{
if(mark[i])continue;
prime[PrimeSize++]=i;
if(i>1000)continue;
for(int j=i*i;j<=100000;j+=i)
{
mark[j]=1;
}
}
}
int main()
{
int n;
init();
while(scanf("%d",&n)!=EOF)
{
//有关初始化的问题,很多东西如果在while scanf里面定义的时候 就不需要初始化了,恩恩基本上都是在里面定义的
//其实差不多的吧
int ansSize;
int ansPrime[100];
int ansNum[100];
ansSize=0;
for(int i=0;i<PrimeSize;i++)
{
if(n%prime[i]==0)
{
ansNum[ansSize]=0;
ansPrime[ansSize]=prime[i];
while(n%prime[i]==0)
{
ansNum[ansSize]++;
n/=prime[i];
}
}
ansSize++;
if(n==1)break;
}
if(n!=1)
{
ansNum[ansSize]=1;
ansPrime[ansSize]=n;
}
int ans=0;
for(int i=0;i<ansSize;i++)
{
ans+=ansNum[i];
}
printf("%d\n",ans);
}
return 0;
}
p81 计算素因数的个数
最新推荐文章于 2020-05-26 07:35:11 发布