#include<stdio.h>intprime[100001];boolmark[100001];intprimesize;intsushu(){ inti; primesize=0; for(i=2;i<=100000;i++){ if(mark[i]==true)continue; prime[primesize++]=i; if(i>=1000)continue; for(intj=i*i;j<=100000;j+=i){ mark[j]=true; } } return0;}intmain(){ sushu(); intn; inti; while(scanf("%d",&n)!=EOF){ intansprime[100]; intanse[100]; intans=0; intanssize=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); } return0;
}
思路:
求开方以内的所有素数
依次遍历素数 如果是其因子 则进一步计算能被该因子整除几回
最后将被整除的次数加在一起
注意:
九度平台上 对于变量的定义 尽量在循环外面 不然容易出现编译错误
本文介绍了一种用于计算输入整数所有素数因子及其出现次数的算法,并提供了完整的C语言实现代码。算法首先筛选出所有小于等于100,000的素数,然后对输入整数进行素数分解并统计每个素数因子的出现次数。
1150

被折叠的 条评论
为什么被折叠?



