Cod sursa(job #531253)
Utilizator | Data | 9 februarie 2011 11:52:51 | |
---|---|---|---|
Problema | Sum | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
using namespace std;
const int N=200001;
int v[N],p[N];
ifstream in("sum.in");
ofstream out("sum.out");
void ciur()
{
long long i,j;
for (i=2;i<N;i++)
v[i]=p[i]=i;
for (i=2;i<N;i++)
if (v[i]==i)
for (j=i;j<N;j+=i)
v[j]=v[j]/i*(i-1);
for (i=2;i*i<N;i++)
if (p[i])
{
for (j=i*i;j<N;j+=i)
p[j]=0;
p[i]+=p[i-1];
}
}
int main()
{
long long t,x;
in>>t;
ciur();
while (t--)
{
in>>x;
out<<(long long)2*x*v[x]<<"\n";
}
return 0;
}