Cod sursa(job #518200)
#include <stdio.h>
long long N,sol,x,n;
long i,j,nr,ok[100000];
char p[102];
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%lld",&N);
for(i=1;(((i*i)<<2)+(i<<2)+1)<=N;i++)
if((p[i>>3]&(1<<(i&7)))==0)
for(j=(((i*i)<<1)+(i<<1));((j<<1)+1)<=N;j+=((i<<1)+1))
p[j>>3]|=(1<<(j&7));
nr=1;
ok[nr]=2;
for(i=1;((i<<1)+1)<=N;i++)
if((p[i>>3]&(1<<(i&7)))==0)
ok[++nr]=2*i+1;
sol=0;
for(i=2;i<=N;i++)
{
x=i;
j=1;
n=i;
do
{
if(x%ok[j]==0)
{
while(x%ok[j]==0) x/=ok[j];
n/=ok[j];
n*=(ok[j]-1);
}
j++;
}
while(x!=1&&x>=ok[j]);
sol+=n;
}
printf("%lld\n",2*sol+1);
return 0;
}