Cod sursa(job #641638)
Utilizator | Data | 28 noiembrie 2011 23:12:00 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.43 kb |
#include <cstdio>
using namespace std;
unsigned char v[2000000/8+1];
int N,nr;
int main ()
{
freopen ("ciur.in","r",stdin);
freopen ("ciur.out","w",stdout);
scanf ("%d",&N);
for (int i=2; i<=N; ++i)
if (!(v[i>>3]&(1<<(i&7))))
{
++nr;
for (int j=i+i; j<=N; j+=i)
v[j>>3]=v[j>>3]|(1<<(j&7));
}
printf ("%d",nr);
return 0;
}