Pagini recente » Cod sursa (job #815861) | Cod sursa (job #1974377) | Cod sursa (job #2426071) | Cod sursa (job #3273901) | Cod sursa (job #659773)
Cod sursa(job #659773)
#include<stdio.h>
using namespace std;
long long nr,n,s,p,i,j,aux,nr1,a[1000002],pr[1000002],phi[1000002];
long pow(long long x,long long y)
{
int i1;
long long p1=1;
for(i1=1;i1<=y;i1++)
p1=1LL*p1*x;
return p1;
}
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
a[1]=1;
for(i=1;i<=n;i++)
if(a[i]==0)
{
nr++;
pr[nr]=i;
for(j=i*i;j<=n;j=j+i)
a[j]=1;
}
s=0;
phi[1]=1;
for(i=2;i<=n;i++)
{
aux=i;
phi[i]=0;
for(j=1;j<=nr&&pr[j]*pr[j]<=aux;j++)
if(aux%pr[j]==0)
{
nr1=0;
while(aux%pr[j]==0)
{
nr1++;
aux=aux/pr[j];
}
phi[i]=1LL*phi[aux]*pow(pr[j],nr1-1)*(pr[j]-1);
break;
}
if(phi[i]==0) phi[i]=i-1;
s=s+phi[i];
}
printf("%lld\n",1LL*s*2+1);
return 0;
}