思路:簡單的篩選
[cpp]
#include<stdio.h>
#define N 500005
int sum[N];
void is_prime()//采用素數篩選,將素數添加到素數的倍數和數組中
{
int i,j;
for(i=0;i<N;i++)
sum[i]=1;
sum[1]=0;
for(i=2;i<N;i++)
for(j=i*2;j<N;j+=i) sum[j]+=i;
} www.2cto.com
int main()
{
int n,m;
scanf("%d",&n);
is_prime();
while(n--)
{
scanf("%d",&m);
printf("%d\n",sum[m]);
}
return 0;
}