Pagini recente » Cod sursa (job #1857307) | Cod sursa (job #1719703) | Cod sursa (job #2924820) | Cod sursa (job #1109630) | Cod sursa (job #69541)
Cod sursa(job #69541)
#include<stdio.h>
#include<fstream.h>
#include<math.h>
typedef struct
{
long long x, e;
} factor;
factor v[10];
long long n, contor, nr, x;
int prim(long x)
{
if (x==2) return 1;
if (x==1) return 0;
if (x%2==0) return 0;
for (long long unsigned d=3; d*d<=x; d+=2)
if (x%d==0) return 0;
return 1;
}
void descomp(long long x)
{
long long exp, d;
d=2;
nr=0;
while (x!=1)
{
exp=0;
if (x%d==0)
{
nr++;
while (x%d==0)
{
exp++;
x/=d;
}
v[nr].e=exp;
v[nr].x=d;
}
d++;
}
}
long long totient(long long x)
{
long long i, c=1;
for (i=1; i<=nr; i++)
c*=((v[i].x-1)*pow(v[i].x,v[i].e-1));
return c;
}
void prelucrare2()
{
long long i, j, s1;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf ("%lld",&n);
for (i=1; i<=n; i++)
{
scanf("%lld",&x);
if (prim(x)==0) descomp(x);
else {v[1].e=1; v[1].x=x; nr=1;}
long long a=totient(x);
s1=(x*a)/2;
s1*=2;
printf("%lld\n",s1*2);
}
}
int main()
{
prelucrare2();
return 0;
}