Cod sursa(job #240840)

Utilizator jupanubv92Popescu Marius jupanubv92 Data 8 ianuarie 2009 20:06:25
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<stdio.h>
#define N 500001

long long phi[N];
long n;
long x[N],max=0;

int main()
{
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    scanf("%ld",&n);
    for (long i=1;i<=n;i++)
    {
        scanf("%ld",&x[i]);
        if (x[i]>max)
            max=x[i];
    }
    max=max*2;
    for (long i=1;i<=max;i++) phi[i]=i;

    for (long i=2;i<=max;i++)
        if (phi[i]==i)
            for (long j=i;j<=max;j+=i) phi[j] /=i, phi[j] *= (i-1);
    for(long i=1;i<=n;i++)
      printf("%lld\n",phi[x[i]]*2*x[i]);
    return 0;
}