Pagini recente » Cod sursa (job #318855) | Cod sursa (job #2873257) | Cod sursa (job #382233) | Cod sursa (job #386811) | Cod sursa (job #241064)
Cod sursa(job #241064)
#include<stdio.h>
#include<math.h>
#define DMAX 50001
char p[DMAX];
void ciur(long n)
{
long i,j,lim;
lim=sqrt(n);
for(i=1;2*i+1<=lim;++i)
if(p[i]==0)
for(j=2*i*i+2*i; 2*j+1<=n; j=j+2*i+1) p[j]=1;
}
/*void afisare_nrprime(long n)
{
long i;
if(p[0]==2) printf("2 ");
for(i=1;2*i+1<=n;++i)
if(p[i]==0)
printf("%ld ",2*i+1);
}
long num_prime (long n)
{
int i;
long num;
num=0;
for(i=1;2*i+1<=n;++i)
if(p[i]==0) num++;
if(n>=2) num++;
return num;
} */
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
long n,x,fane,trotil;
scanf("%ld",&trotil);
for(fane=1;fane<=trotil;++fane)
{ scanf("%ld",&n);
x=n;
ciur (n);
long phi,e;
phi=n;
e=0;
while(n%2==0) {e++;n=n/2;}
if(e) phi=phi/2;
long i;
i=1;//luam fct primi din ciur
long lim;
lim=sqrt(n)+1;
while(n>1 && 2*i+1<lim)
{
if(p[i]==0)
{
e=0;
while(n%(2*i+1)==0) {e++;n=n/(2*i+1);}
if(e) phi=phi*2*i/(2*i+1);
}
i++;
}
if(n>1) phi=phi*(n-1)/n;
long long s;
s=2*x*phi;
printf("%lld\n",s);
}
return 0;
}