void-man

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

给出一个数,求出它的各个因子的和,当然不包括本身...

跟素数筛法差不多,因为题目给出的时间是5s,所以可以循环到500000

1 #include <stdio.h>
2 #include <string.h>
3  #define N 500001
4  int num[N];
5  int main()
6 {
7 int n;
8 memset(num,0,sizeof(num));
9 for(int i=1;i<=250000;i++)//两种方法实现
10   for(int j=2;i*j<=500000;j++)
11 num[i*j]+=i;
12 /*for(int i = 1; i <= 250000; i++)
13 for(int j = i<<1; j <= 500000; j += i)
14 num[j]+=i;*/
15
16
17 while(scanf("%d",&n)!=EOF)
18 for(int i=0;i<n;i++)
19 {
20 int m;
21 scanf("%d",&m);
22 printf("%d\n",num[m]);
23 }
24
25 }
posted on 2011-04-16 22:31  void-man  阅读(401)  评论(0)    收藏  举报