Pagini recente » Cod sursa (job #1824944) | Cod sursa (job #1806929) | Monitorul de evaluare | Cod sursa (job #1738346) | Cod sursa (job #69543)
Cod sursa(job #69543)
#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<=100001;i++) v[i]=i;
for(i=2;i<=100001;i++)
{
if(i>x) break;
if(u[i]==0)
{
j=2;
v[i]--;
while(i*j<=x)
{
u[i*j]=1;
v[i*j]=v[i*j]-v[i*j]/i;
j++;
}
}
}
}
void prelucrare2()
{
long long i, j, s1;
ifstream in("sum.in");
ofstream out("sum.out");
in>>n;
eratostene();
for (i=1; i<=n; i++)
{
in>>x;
s1=(v[x]*x)/2;
s1*=2;
out<<s1*2<<'\n';
}
}
int main()
{
prelucrare2();
return 0;
}