Cod sursa(job #1410243)
Utilizator | Delia Draghici delia_99 | Data | 30 martie 2015 22:46:41 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
using namespace std;
int n,i,j,nr=0;
bool ap[2000000];
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((ap[i>>3] & (1<<(i&7)))==0)
{
for(j=(((i*i)<<1)+(i<<1)); (j<<1)<n ; j+=(i<<1)+1)
ap[j>>3] |= (1<<(j&7));
}
for(i=1; (i<<1)<n; ++i)
if((ap[i>>3]&(1<<(i&7)))==0)
++nr;
printf("%d",nr);
return 0;
}