Pagini recente » Cod sursa (job #1895522) | Cod sursa (job #1043696) | Cod sursa (job #3273108) | Cod sursa (job #2291193) | Cod sursa (job #307285)
Cod sursa(job #307285)
#include <stdio.h>
#include <math.h>
int main()
{long long s=0;
int v[10000000],fi[10000000],i,j,n,nr,q;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
for (i=2;i<=n/2;i++)
if (!v[i])
for (j=2;j<=n/i;j++) v[i*j]=i;
for (i=2;i<=(int)sqrt(n);i++)
if (!v[i])
{nr=i;
for (;nr<=n;) {fi[nr]=nr-(nr / i);nr*=i;}
}
for (i=2;i<=n;i++)
if (fi[i]==0)
if (v[i]==0) fi[i]=i-1; else
{nr=i;
for (;nr%v[i]==0;)
nr=nr/v[i];
fi[i]=fi[nr]*fi[i / nr];
}
for (i=1;i<=n;i++) s+=fi[i];
printf("%lld",2*s+1);
return 0;}