您的位置:首页 > 其它

hdu1215七夕节

2013-08-01 21:52 190 查看
1.题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1215

 

2.思路:

    题目要求求所给数的所有因子之和。

    可以采用筛选法,首先要知道每个数都有因数1,每个数的最大因数不超过它的1/2。

    这样就可以用哈希表和筛选法做。

 

 

3,.参考代码:

 

#include <stdio.h>

#define num 500000

int a[num+1];

int main()
{
int t,n,i,j;

for(i=2;i<=num;i++)   ///记得下标从1开始
a[i]=1;   ///1是所有数的因子

for(i=2;i<=num/2;i++)   ///采用素数筛选,将素数添加到素数的倍数和数组中,
{   ///记得下标i从2开始
for(j=2*i;j<=num;j+=i)   ///计算因子之和
a[j]+=i;
}

scanf("%d",&t);

while(t--)
{
scanf("%d",&n);

printf("%d\n",a
);
}

return 0;
}


 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  筛选法