Cod sursa(job #244504)

Utilizator IoannaPandele Ioana Ioanna Data 15 ianuarie 2009 11:04:46
Problema Sum Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<stdio.h>
#include<math.h>
long long phi,cx,x;
long n;
long p[]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547};

void read()
{
scanf("%ld",&x);
cx=x;
}

void calcphi()
{
phi=2*x;
int i;
long lim;
lim=sqrt(2*x);
for (i=1;p[i]<=lim;i++)
    {
    if (x%p[i]==0)
       {
        phi=phi/p[i];
        phi=phi*(p[i]-1);
        while (x%p[i]==0)
           {
            x/=p[i];
           }
        }
    }
if (x>1)
   {
    phi=phi/x;
    phi=phi*(x-1);
   }
}

void suma()
{
long long s=2*cx;
s=s*phi/2;
printf("%lld\n",s);
}


int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%ld",&n);
long i;
for (i=1;i<=n;i++)
    {
     read();
     calcphi();
     suma();
    }
return 0;
}