Pagini recente » Cod sursa (job #553071) | Cod sursa (job #2811254) | Cod sursa (job #2363366) | Cod sursa (job #1304522) | Cod sursa (job #244505)
Cod sursa(job #244505)
#include<stdio.h>
#include<math.h>
#define DMAX 50006
char p[DMAX];
void ciur(long n)
{
long i,j,lim;
lim=sqrt(n);
for (i=1;2*i+1<=lim;i++)
for (j=2*i*i+2*i;2*j+1<=n;j=j+2*i+1)
p[j]=1;
}
int main()
{
long n,i,e,j,x,k;
long double cx,phi,sum;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%ld",&n);
for (j=1;j<=n;j++)
{
scanf ("%Lf",&cx);
x=cx;
ciur (x);
phi=cx;
if (x%2 && p[(x-1)/2]==0)
{
phi=phi/x*(x-1);
sum=cx/2*phi;
sum=sum+sum+cx*phi;
printf("%.0Lf\n",sum);
sum=0;
}
else
{
for (i=1;2*i+1<=x;i++)
if (p[i]==0)
{
e=0;
while (x%2==0)
{
e++;
x=x/2;
}
if (e)
phi=phi/(2*i+1)*(2*i);
e=0;
k=i*2+1;
while (x%k==0)
{
e++;
x=x/(i*2+1);
}
if (e)
phi=phi/(2*i+1)*(2*i);
}
if (x>1)
{
phi=phi/(2*x+1)*(2*x);
}
x=cx;
k=phi;
sum=x/2*k;
sum=sum+sum+x*k;
printf("%.0Lf\n",sum);
sum=0;}
}
return 0;
}