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 }
时间: 2024-10-06 18:40:14