约数之和
时间限制(普通/Java) :
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 234 测试通过 : 139
总提交 : 234 测试通过 : 139
比赛描述
给定一个正整数N,请求出它所有约数的和。
比如,20有6个约数:1,2,4,5,10,20,所以,约数之和是1+2+4+5+10=42。
比如,20有6个约数:1,2,4,5,10,20,所以,约数之和是1+2+4+5+10=42。
输入
多组测试数据(不多于500000组),每组数据输入一行,一个正整数N(1≤N≤500000)。输入直至文件结尾。
输出
每组数据输出一行,一个正整数S:表示N的约数之和。
样例输入
1
2
4
8
16
样例输出
1
3
7
15
31
提示
题目来源
openxxx
#include<iostream>
#define N 500000
int a[N+1];
int main(){
int n,i,j;
for(i=1; i<=N; i++){
for(j=i; j<=N; j+=i){
a[j] += i;
}
}
while(scanf("%d",&n)==1){
printf("%d\n",a[n]);
}
}