Pagini recente » Cod sursa (job #1561630) | Cod sursa (job #1961396) | Cod sursa (job #2171336) | Cod sursa (job #898843) | Cod sursa (job #69554)
Cod sursa(job #69554)
#include<stdio.h>
#include<fstream.h>
#include<math.h>
typedef struct
{
long x, e;
} factor;
long v[100001], u[100001];
long n, contor, nr, x;
/*
void descomp(long x)
{
int 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 totient(long x)
{
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 eratostene()
{
long long i,j;
for(i=2;i<=100000;i++) v[i]=i;
for(i=2;i<=100000;i++)
{
if(i>100000) break;
if(u[i]==0)
{
j=2;
v[i]--;
while(i*j<=100000)
{
u[i*j]=1;
v[i*j]=v[i*j]-v[i*j]/i;
j++;
}
}
}
}
int prim(long 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 prelucrare2()
{
long long i, j;
long long unsigned s1;
ifstream in("sum.in");
ofstream out("sum.out");
in>>n;
eratostene();
for (i=1; i<=n; i++)
{
in>>x;
if (prim(x)==0) s1=(v[x]*x)/2;
else s1=(x-1)*x;
s1*=4;
out<<s1<<'\n';
}
}
int main()
{
prelucrare2();
return 0;
}