Pagini recente » Cod sursa (job #1475080) | Cod sursa (job #2306029) | Cod sursa (job #1909153) | Cod sursa (job #879624) | Cod sursa (job #400898)
Cod sursa(job #400898)
#include<cstdio>
#include<iostream>
using namespace std;
int e[35005],p[3805],nrp;
void eratostene ()
{
e[0]=e[1]=1;
for(int i=2;i*i<=35000;++i)
if(e[i]==0)
for(int j=2*i;j<=35000;j+=i)
e[j]=1;
nrp=0;
for(int i=2;i<=35000&&nrp<3800;++i)
if(e[i]==0)
p[nrp++]=i;
}
int euler (int a)
{
int pr=a,d=0,ex;
while(a>1){
ex=0;
while(a%p[d]==0)
a/=p[d],ex++;
if(ex>0)
pr=pr/p[d]*(p[d]-1);
d++;
if(p[d]*p[d]>a&&a>1)
pr=pr/a*(a-1) ,a=1;
}
return pr;
}
int main ()
{
eratostene ();
int n,s,i;
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
s=1;
for(i=2;i<=n;i++)
s+=2*euler(i);
printf("%d",s);
return 0;
}