Pagini recente » Cod sursa (job #1442301) | Cod sursa (job #2336695) | Cod sursa (job #2061533) | Cod sursa (job #369702) | Cod sursa (job #64682)
Cod sursa(job #64682)
#include<stdio.h>
#define Xm 100001
long long A[Xm];
int Pf[6][Xm],Npf[Xm],P[Xm];
long long sum(int i, int j, int x)
{
int k;
long long s=(i<<1)/x;
s=(s*(s+1)>>1)*x;
for(k=0;k<j;++k)
s-=sum(i,k,x*Pf[k][i]);
return s;
}
void preprocess()
{
int i,j,np=1;
P[0]=2;
for(i=3;i<Xm;i+=2)
{
for(j=0;P[j]*P[j]<=i && i%P[j];++j);
if(P[j]*P[j]>i)
P[np++]=i;
}
for(i=0;i<np;++i)
for(j=P[i];j<Xm;j+=P[i])
Pf[Npf[j]++][j]=P[i];
for(i=2;i<Xm;++i)
{
A[i]=(long long)i*((i<<1)+1);
for(j=0;j<Npf[i];++j)
A[i]-=sum(i,j,Pf[j][i]);
}
}
void solve()
{
int n,x;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
while(n--)
{
scanf("%d",&x);
printf("%lld\n",A[x]);
}
}
int main()
{
preprocess();
solve();
return 0;
}