Pagini recente » Cod sursa (job #184322) | Cod sursa (job #2303242) | Cod sursa (job #440446) | Cod sursa (job #338126) | Cod sursa (job #64689)
Cod sursa(job #64689)
#include<stdio.h>
#include<stdlib.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()
{
char S[20],c;
int n,i,j;
long long x;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d\n",&n);
while(n--)
{
gets(S);
i=atoi(S);
x=A[i];
i=j=0;
while(x)
{
S[j++]=x%10+'0';
x/=10;
}
S[j--]=NULL;
while(i<j)
{
c=S[i];
S[i]=S[j];
S[j]=c;
++i; --j;
}
puts(S);
}
}
int main()
{
preprocess();
solve();
return 0;
}