Cod sursa(job #355235)
Utilizator | Ioana Radu iora | Data | 10 octombrie 2009 14:28:44 |
---|---|---|---|
Problema | Sum | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.43 kb |
#include<cstdio>
const int NM=1<<17;
int e[NM];
void euler(int n)
{
int i,j;
for(i=2;i<=n;++i)
e[i]=i;
for(i=2;i<=n;++i)
if(e[i]==i)
for(j=i;j<=n;j+=i)
e[j]=e[j]/i*(i-1);
}
int main()
{
int N,i,x;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&N);
euler(100000);
for(i=1;i<=N;++i)
{
scanf("%d",&x);
printf("%lld\n",(long long) e[x]*2*x);
}
return 0;
}