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;

}  

  

你可能感兴趣的:(1740-约数之和)