Pagini recente » Cod sursa (job #2665357) | Cod sursa (job #578415) | Cod sursa (job #463133) | Cod sursa (job #2662925) | Cod sursa (job #302112)
Cod sursa(job #302112)
#include <stdio.h>
#define N 1000002
int n;
long long sum;
bool div[N];
bool neprim[N];
int main()
{
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
scanf("%d",&n);
for(int i=2;i*i<=n;i++)
if(!neprim[i])
for(int j=i*i;j<=n;j+=i)
neprim[j]=1;
sum=(long long)(n*(n-1)+1);
for(int i=2;i<=n;i++) //fiecare nivel
if(neprim[i])
{ for(int j=2;j<=i;j++) //caut divizorii
if(i%j==0&&!neprim[j]) //divizibil
{ for(int k=j;k<i;k+=j) //marchez multiplii
div[k]=1;
}
for(int k=2;k<=i;k++) //verific si scad de 2 ori un multiplu
{ if(div[k]) sum-=2;
div[k]=0;
}
}
printf("%lld",sum);
return 0;
}