#include<stdio.h>
int
prime[100001];
bool
mark[100001];
int
primesize;
int
sushu(){
int
i;
primesize=0;
for
(i=2;i<=100000;i++){
if
(mark[i]==
true
)
continue
;
prime[primesize++]=i;
if
(i>=1000)
continue
;
for
(
int
j=i*i;j<=100000;j+=i){
mark[j]=
true
;
}
}
return
0;
}
int
main(){
sushu();
int
n;
int
i;
while
(
scanf
(
"%d"
,&n)!=EOF){
int
ansprime[100];
int
anse[100];
int
ans=0;
int
anssize=0;
for
(i=0;i<primesize;i++){
if
(n%prime[i]==0){
ansprime[anssize]=prime[i];
anse[anssize]=0;
while
(n%prime[i]==0){
n=n/prime[i];
anse[anssize]++;
}
anssize++;
if
(n==1)
break
;
}
}
if
(n!=1){
ansprime[anssize]=n;
anse[anssize++]=1;
}
for
(i=0;i<anssize;i++){
ans+=anse[i];
}
printf
(
"%d\n"
,ans);
}
return
0;
}
思路:
求开方以内的所有素数
依次遍历素数 如果是其因子 则进一步计算能被该因子整除几回
最后将被整除的次数加在一起
注意:
九度平台上 对于变量的定义 尽量在循环外面 不然容易出现编译错误