给出一个数,求出它的各个因子的和,当然不包括本身...
跟素数筛法差不多,因为题目给出的时间是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 }