Cod sursa(job #313993)

Utilizator dya_ndmNanuti Diana-Maria dya_ndm Data 10 mai 2009 12:28:05
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<math.h>
#define LMAX 200000

long n,x;

char c[100005];

void ciur(long n)
{
long long i,j;
for(i=1;2*i+1<=n;++i)
   if(c[i]==0)
     for(j=2*i*i+2*i;2*j+1<=n;j=j+2*i+1)
         c[j]=1;
}

long long phi()
{
long i,ti,cx,lim,fi=1;
lim=sqrt(x);
ti=1;
i=1;
cx=x;
while(ti<=lim)
     {
     ti=2*i+1;
     if(c[i]==0)
       if(cx%ti==0)
         {
         fi=fi*(ti-1);
         cx=cx/ti;
         }
     ++i;
     }
if(cx>1)
  fi=fi*(cx-1);
return fi;
}

int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
int i;
long long s;
ciur(LMAX);

scanf("%ld",&n);

for(i=1;i<=n;++i)
   {
   scanf("%ld",&x);
   s=phi();
   s=2*s*x;
   printf("%lld\n",s);
   }
return 0;
}