Cod sursa(job #632860)
Utilizator | Data | 12 noiembrie 2011 14:18:38 | |
---|---|---|---|
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,Ana;
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))))
{
++Ana;
for (int j=i+i; j<=N; j+=i)
v[j>>3]=v[j>>3]|(1<<(j&7));
}
printf ("%d",Ana);
return 0;
}