#include<stdio.h>
int main()
{
int a[500001]={0};
int i,j;
for(i=1;i<=250000;i++)
{
for(j=2;i*j<=500000;j++)
{
a[i*j]+=i;
}
}
while(scanf("%d",&i)!=EOF)
{
while(i--)
{
scanf("%d",&j);
printf("%d\n",a[j]);
}
}
return 0;
}
原来数据量过大时,可以把数据先存入一个数组中,把它编译了,用时直接取就行了