Cod sursa(job #216399)
| Utilizator | Data | 24 octombrie 2008 13:58:14 | |
|---|---|---|---|
| Problema | Sum | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.44 kb |
#include <stdio.h>
#define maxx 100005
int n, e [maxx];
void euler (int n)
{
int i, j;
for (i=1; i<=n; ++i)
e [i]=i;
for (i=2; i<=n; ++i)
{
if (e [i] == i)
--e [i];
for (j=i+i; j<=n; j+=i)
e [j]=e [j]/i*(i-1);
}
}
int main ()
{
int i, x;
freopen ("sum.in", "r", stdin);
freopen ("sum.out", "w", stdout);
euler (maxx);
scanf ("%d", &n);
for (i=1; i<=n; ++i)
{
scanf ("%d", &x);
printf ("%lld\n", (long long)e [x]*x*2);
}
}
