hdu oj 2136 Largest prime factor 和 nyoj 520 最大素因子 【筛选法】

来源:互联网 发布:炉石助手mac版 怎么用 编辑:程序博客网 时间:2024/04/19 22:45

hud oj 2136  链接:http://acm.hdu.edu.cn/showproblem.php?pid=2136

nyoj  520     链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=520

这两个题是一样的,nyoj就是翻译hduoj的,在hduoj看不懂题的可以到nyoj 去看看。。这个题是貌似还是 ice 翻译过来的,说一下思路吧。

看看题时间限制为1000ms,n范围1000000,如果你先打个素数表,在一个一个判断输入数据的最大质因子序数,这样肯定让你超时。。

这个题应该用筛法。筛完之后就把能把所有 在1000000内的数最大质因子的序数存在一个数组中,具体筛法是:如果a为素数(假设序数为1),则把它的序数记在一个数组b [ a ] = 1里,然后 b [ 2a ],b [ 3a ],b [ 4a ] .......都即为1;就这样在筛选的过程中不断更新,筛完之后就有ok了。。

代码:

 #include<stdio.h>#define max 1000005int prime[max]={0};int main(){int a,b,n,c=1;for(a=2;a<max;a++){if(prime[a]==0){for(b=a;b<max;b+=a)prime[b]=c;c++;}}    while(scanf("%d",&n)!=EOF){printf("%d\n",prime[n]);}}                


原创粉丝点击