首页 > 代码库 > zoj 2095 Divisor Summation

zoj 2095 Divisor Summation

Divisor Summation

Time Limit: 5 Seconds      Memory Limit: 32768 KB

Give a natural number n (1 <= n <= 500000), please tell the summation of all its proper divisors.

Definition: A proper divisor of a natural number is the divisor that is strictly less than the number.

e.g. number 20 has 5 proper divisors: 1, 2, 4, 5, 10, and the divisor summation is: 1 + 2 + 4 + 5 + 10 = 22.

 


Input

An integer stating the number of test cases, and that many lines follow each containing one integer between 1 and 500000.


Output

One integer each line: the divisor summation of the integer given respectively.


Sample Input

3
2
10
20


Sample Output

1
8
22

 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int main(){ 5     int n, t, sum; 6     scanf("%d", &t); 7     while(t--){ 8         scanf("%d", &n); 9         if(n == 1){10             printf("0\n");11             continue;12         }13         sum = 1;14         for(int i = 2; i * i <= n; i++){15             if(n % i == 0){16                 if(n / i != i){17                     sum += (i + n / i);18                 } else {19                     sum += i;20                 }21             }22         }23         printf("%d\n", sum);24     }25     return 0;26 }

 

zoj 2095 Divisor Summation