Pagini recente » Cod sursa (job #486215) | Cod sursa (job #779168) | Cod sursa (job #1000583) | Cod sursa (job #1744452) | Cod sursa (job #518211)
Cod sursa(job #518211)
#include <stdio.h>
long long N,sol,x,n;
long i,j,nr,v[1000010];
char p[1002];
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));
for(i=1;i<=N;i++) v[i]=i;
for(j=2;j<=N;j+=2) v[j]/=2;
for(i=1;((i<<1)+1)<=N;i++)
if((p[i>>3]&(1<<(i&7)))==0)
{
x=i*2+1;
for(j=x;j<=N;j+=x)
{
v[j]/=x;
v[j]*=(x-1);
}
}
sol=0;
for(i=2;i<=N;i++)
sol+=v[i];
printf("%lld\n",2*sol+1);
return 0;
}