题目来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=478
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cmath>
using namespace std;
const int MAXN = 500010;
typedef long long LL;
LL a[MAXN];
void Pre_Slove()
{
int i, j;
for(i = 0; i < MAXN; ++i)
a[i] = 1;
a[0] = a[1] = 0;
for(i = 2; i < (MAXN/2); ++i)
{
for(j = i + i; j < MAXN; j += i)
a[j] += i;
}
}
int main()
{
int T, n, i;
scanf("%d", &T);
Pre_Slove();
while(T--)
{
scanf("%d", &n);
printf("%lld\n", a[n]);
}
return 0;
}