hdu 1215 七夕节

刚看到这题就知道要有筛选,开始没想到怎么做,后来想,能不能将素数先筛出来,素数都为1嘛,然后再用暴力求剩下的,结果悲哀的RE了,于是上网查,看到他们竟然用筛选法直接求每个数的因子,感觉自己太笨了,一直以为,埃勒托色尼筛选法只能筛选素数,是我对算法的理解不够深入。。。。。。。

代码:

 1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 int f[500005];
5 int main()
6 {
7 int i,j,t,n;
8 for(i=0;i<=500000;i++)
9 f[i]=1;
10 f[0]=f[1]=0;
11 for(i=2;i<=500000;i++)
12 {
13 for(j=2;j*i<=500000;j++)
14 f[i*j]+=i;
15 }
16 scanf("%d",&t);
17 while(t--)
18 {
19 scanf("%d",&n);
20 printf("%d\n",f[n]);
21 }
22 return 0;
23 }



posted @ 2011-12-12 21:20  Misty_1  阅读(153)  评论(0编辑  收藏  举报