Cod sursa(job #765375)
Utilizator | Data | 7 iulie 2012 13:31:41 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.38 kb |
#include<cstdio>
int n,i,j,k=1,p[2000005];
int main()
{freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&n);
for(i=1;((i*i)<<1)+(i<<1)<=n;i++)
if((p[i>>3]&(1<<(i&7)))==0)
for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
p[j>>3]|=(1<<(j&7));
for(i=1;2*i+1<=n;i++)
if((p[i>>3]&(1<<(i&7)))==0)
k++;
printf("%d",k);
return 0;}