Cod sursa(job #660108)
Utilizator | Suzanica Mihu suzanica | Data | 11 ianuarie 2012 19:01:43 |
---|---|---|---|
Problema | Sum | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <cstdio>
#define Xmax 100001
int N, X;
int P[Xmax];
void phi()
{
int d, i;
for (i=2; i<Xmax; ++i)
P[i] = i;
for (i=2; i<Xmax; i+=2)
P[i] = P[i] / 2;
for (d=3; d<Xmax; d+=2)
if (P[d] == d)
for (i=d; i<Xmax; i+=d)
P[i] = P[i] / d * (d-1);
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
phi();
scanf("%d", &N);
while (N--)
{
scanf("%d", &X);
printf("%lld\n", (long long)P[X] * 2 * X);
}
return 0;
}