Cod sursa(job #110672)
#include <fstream.h>
#define NMAX 1000000
long long pow(long p,long e)
{ long i;
long long s=1;
for (i=1;i<=e;i++) s=s*p;
return s;
}
long prim(long x)
{ long i,sw,j;
for (i=2;i<=x;i++)
{ sw=1;
if (x%i!=0) sw=0;
if (sw)
{ for (j=2;j<=i/2&&sw;j++)
if (i%j==0)
sw=0;
}
if (sw) return i;
}
return 1;
}
int main()
{ long n,i,j,t[NMAX],x,p,e,a;
long long nr;
ifstream f("fractii.in");
f>>n;
f.close();
nr=1;
t[1]=1;
for (i=2;i<=n;i++)
{ x=i;
p=prim(x);
e=0;
while (x%p==0)
{ e++;
x=x/p;
}
a=x;
t[i]=(p-1)*pow(p,e-1)*t[a];
nr+=2*t[i];
}
ofstream g("fractii.out");
g<<nr;
g.close();
return 0;
}