1740-约数之和

描述

给定一个正整数N,请求出它所有约数的和。 比如,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

#include<iostream>
using namespace std;

const int Max_N=500000;
int N,DS[Max_N+5];

void Divisor_Sum()
{
    for(int i=1;i<=Max_N;i++)
    {
        int j=i;
        while(j<=Max_N)
        {
            DS[j]+=i;
            j+=i;
        }
    }
}

int main()
{
    Divisor_Sum();
    while(cin>>N)
    {
        cout<<DS[N]<<endl;
    }
    return 0;
}  

  

posted @ 2013-11-23 09:38  七年之后  阅读(219)  评论(0编辑  收藏  举报