Pagini recente » Cod sursa (job #1760091) | Cod sursa (job #714086) | Cod sursa (job #269440) | Cod sursa (job #1784484) | Cod sursa (job #293346)
Cod sursa(job #293346)
#include <stdio.h>
#define N 1000000
int p[N],nr,div;
bool scos[N];
int n,sum,x;
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
sum=n;
for(int i=2;i<=n;i++)
{ x=i; div=1;
for(int j=2;j<=x;j++)
if(x%j==0)
{ p[0]++;
while(x%j==0)
{ p[p[0]]++;
x/=j;
}
}
for(int j=1;j<=p[0];j++)
{ div*=(p[j]+1);
p[j]=0;
}
div-=2;
sum+= (n-1 - 2*div);
x=i-2-div;
if(!scos[i]&&x)
for(int j=2*i;j<=n;j+=i)
{ scos[j]=1;
sum-=2*x;
//printf("Am scos %d de pe nivelul %d\n",2*x,j);
}
//printf("Dupa nivelul %d mai sunt %d fractii, iar div = %d, x = %d\n",i,n-1-2*div,div,x);
p[0]=0;
}
printf("%d",sum);
return 0;
}