Pagini recente » Cod sursa (job #1050777) | Cod sursa (job #1405374) | Cod sursa (job #1469456) | Cod sursa (job #1208921) | Cod sursa (job #119110)
Cod sursa(job #119110)
#include<cstdio>
#define Max 1000001
long long p[Max];
long long n;
long long rez;
void ciur()
{
long long i,j;
for(i=4;i<=n;i+=2) p[i]=2;
for(i=3;i<=n;i+=2)
if(p[i]==0)
for(j=i*i;j<=n;j+=2*i)
p[j]=i;
}
void totient()
{
double tot;
long long i,j,k;
for(i=2;i<=n;i++)
{
for(tot=(double)i,k=i,j=p[k];j;j=p[k])
{
tot*=(1-1/(double)j);
while(k%j==0)
k/=j;
}
if(k>1) tot*=(1-1/(double)k);
// printf("tot(%lld)=%.0lf\n",i,tot);
rez+=(long long)tot;
}
rez=2*rez+1;
}
int main()
{
freopen("fractii.in","r",stdin);
scanf("%lld",&n);
ciur();
totient();
freopen("fractii.out","w",stdout);
printf("%lld\n",rez);
return 0;
}