ZOJ 2095 Divisor Summation

刚开始做的时候不懂啊,怎么做怎么Time Limit Exceeded,那个心凉啊。

 

Time limit: 5 Seconds   Memory limit: 32768K   
Total Submit: 4504   Accepted Submit: 862   

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


Author: Neal Zane


 

#include<stdio.h>
int main()
{
  int a[500001] = { 0 , 0 } ;
  int i , j ;
  for( i = 1 ; i <= 250000 ; i ++ )
    for ( j = 2 ; i*j <= 500000 ; j ++ )
      a[i*j] += i ;
  scanf("%d",&i) ;
  while( i -- )
  {
    scanf("%d",&j);
    printf("%d\n",a[j]);
  }
  return 0 ;
}

 

posted @ 2012-04-12 23:49  川川.aug  阅读(211)  评论(0)    收藏  举报