Pagini recente » Cod sursa (job #2392843) | Cod sursa (job #1825925) | Cod sursa (job #2841169) | Cod sursa (job #81495) | Cod sursa (job #222189)
Cod sursa(job #222189)
#include<stdio.h>
#include <string.h>
int k,nr,rg,vf[200000],registered[100001];
inline long long GetDivis(int x)
{
long long sum,upper_lim,lm;
int i,j;
sum=0;
rg=0;
upper_lim=(x<<1);
vf[x]=1;
registered[rg]=x;
rg++;
sum+=x;
vf[upper_lim]=1;
registered[rg]=upper_lim;
rg++;
sum+=upper_lim;
for(i=2;i<=(x>>1);++i)
if(!(x%i))
{
lm=i;
for(j=1;lm<upper_lim;++j)
{
lm=i*j;
if(!vf[lm]&&lm!=x&&lm!=upper_lim)
{
sum+=lm;
vf[lm]=1;
registered[rg]=lm;
rg++;
}
}
}
/*for(i=0;i<rg;i++)
vf[registered[i]]=0;
*/
memset(vf,0,200001);
if(!(upper_lim&1))
upper_lim=(upper_lim>>1)*(upper_lim+1);
else
upper_lim=upper_lim*((upper_lim+1)>>1);
return upper_lim-sum;
}
int main()
{
int n,x;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
k=1;
while(n)
{
scanf("%d",&x);
printf("%lld\n",GetDivis(x));
k++;
n--;
}
return 0;
}