Pagini recente » Cod sursa (job #1894567) | Cod sursa (job #246969) | Cod sursa (job #90751) | Cod sursa (job #1145917) | Cod sursa (job #178002)
Cod sursa(job #178002)
#include <stdio.h>
char v[2000002];
long long n,i,j,p[1000000],pr[1000000],f,s[1000000];
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%lld",&n);
for(i=3;i<=1000000;i++)p[i]=i;
for(i=3;i<=1000000;i=i+2)
if(!v[i]) {
for(j=3*i;j<=1000000;j=j+2*i) v[j]=1;
}
p[1]=1;
p[2]=1;
pr[2]=1;
for(i=3;i<=1000000;i=i+2)
if(!v[i]){p[i]=i-1;pr[i]=1;}
for (i=3;i<=n;i++)
{
if (p[i]==i){
for (j=2;j<=i/2+1;j++)
if (pr[j]==1)
if (i%j==0)
p[i]=p[i]*(j-1)/j;
}
}
for(i=1;i<=n;i++)
s[i]+=p[i]+s[i-1];
printf("%lld\n",2*s[n]-1);
return 0;
}