Pagini recente » Cod sursa (job #592188) | Cod sursa (job #258694) | Cod sursa (job #1191658) | Cod sursa (job #1109438) | Cod sursa (job #69561)
Cod sursa(job #69561)
#include<stdio.h>
#include<fstream.h>
#include<math.h>
long v[200001], u[200001];
long n, contor, nr, x;
void eratostene()
{
long long i,j;
for(i=2;i<=200000;i++) v[i]=i;
for(i=2;i<=200000;i++)
{
if(i>200000) break;
if(u[i]==0)
{
j=2;
v[i]--;
while(i*j<=200000)
{
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 unsigned 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);
else s1=(x-1)*x;
s1*=2;
out<<s1<<'\n';
}
}
int main()
{
prelucrare2();
return 0;
}