Pagini recente » Cod sursa (job #1325951) | Cod sursa (job #3190824) | Cod sursa (job #2204188) | Cod sursa (job #1421620) | Cod sursa (job #2114286)
#include <cstdio>
#include <cmath>
using namespace std;
int nr,p[100000];
bool c[1000010];
void ciur(int n){
int lim=(int)sqrt(double(n)),i,j;
c[0]=c[1]=1;
for(i=4;i<=n;i=i+2)
c[i]=1;
for(i=3;i<=lim;i=i+2){
for(j=i*i;j<=n;j=j+2*i)
c[j]=1;
}
}
int phi(int n){
int i=1,prod=n;
if(c[n]==0)
return n-1;
else{
while(p[i]<=n){
if(n%p[i]==0){
prod=prod/p[i]*(p[i]-1);
while(n%p[i]==0)
n=n/p[i];
}
++i;
}
return prod;
}
}
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
int n,i;
long long s=0;
scanf("%d",&n);
ciur(1000000);
for(i=1;i<=1000000;++i){
if(c[i]==0)
p[++nr]=i;
}
for(i=1;i<=n;++i)
s=s+phi(i);
s=2*s-1;
printf("%lld",s);
}