Pagini recente » Cod sursa (job #924744) | Cod sursa (job #2419064) | Cod sursa (job #1500057) | Cod sursa (job #2008266) | Cod sursa (job #1757964)
#include<cstdio>
#include<bitset>
const int NMAX=100002;
std::bitset<NMAX> neprim;
int phi[NMAX];
void Ciur(int n)
{
neprim[1]=true;
for(int i=2;i*i<=n;i++)
{
if(neprim[i])
continue;
for(int j=i*i;j<=n;j+=i)
{
neprim[j]=true;
}
}
}
void Euler(int n)
{
for(int i=1;i<=n;i++)
phi[i]=i;
for(int i=2;i<=n;i++)
{
if(neprim[i])
continue;
for(int j=i;j<=n;j+=i)
phi[j]-=phi[j]/i;
}
}
int Rasp(int x)
{
return 2*phi[x]*x;
}
int main()
{
Ciur(NMAX);
Euler(NMAX);
FILE *in=fopen("sum.in","r");
int n;
fscanf(in,"%d ",&n);
FILE *out=fopen("sum.out","w");
for(int i=1;i<=n;i++)
{
int x;
fscanf(in,"%d ",&x);
fprintf(out,"%d\n",Rasp(x));
}
fclose(in);
fclose(out);
return 0;
}