Pagini recente » Cod sursa (job #3245990) | Cod sursa (job #60273) | Cod sursa (job #1734370) | Cod sursa (job #1442105) | Cod sursa (job #39120)
Cod sursa(job #39120)
#include<stdio.h>
#include<string.h>
#include<math.h>
int n,i,j,k,t[10001];
long long nr;
char prim[10001];
int tot(int n)
{int nr=n;
if(prim[n]) return n-1;
if(sqrt(n)==(int)sqrt(n)) {nr=n;n=sqrt(n);}
for(int i=2;i<=n;i++)
if(prim[i]&&n%i==0) {nr=nr-nr/i;n=n/i; }
return nr;}
int main()
{freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
nr=1;
memset(prim,1,n+1);
for(i=2;i<=n;i++)
if(prim[i])
for(j=2*i;j<=n;j=j+i)
prim[j]=0;
nr=1;
t[1]=1;
for(i=2;i<=n;i++)
{if(prim[i]) t[i]=i-1;
else{
for(j=2;!prim[j]||i%j;j++);
k=1;while((i/(k*j))%j==0) k=k*j;
t[i]=t[i/(k*j)]*(j-1)*k;}
nr=nr+2*t[i];}
printf("%lld",nr);
fclose(stdout);
return 0;}