您的位置:首页 > 其它

hdu 1215 七夕节

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

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int f[500005];
int main()
{
int i,j,t,n;
for(i=0;i<=500000;i++)
f[i]=1;
f[0]=f[1]=0;
for(i=2;i<=500000;i++)
{
for(j=2;j*i<=500000;j++)
f[i*j]+=i;
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",f
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: