Cod sursa(job #153329)
| Utilizator | Data | 10 martie 2008 14:09:13 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include <cstdio>
#include <bitset>
using namespace std;
#define MAXN 2000005
int N;
bitset<MAXN> u;
int main()
{
freopen("ciur.in", "rt", stdin);
freopen("ciur.out", "wt", stdout);
scanf("%d", &N);
int i, pNr = 1;
for (i = 3; i * i <= N; i += 2)
{
if (u[i])
continue;
pNr++;
for (int j = i * i; j <= N; j += i)
u[j] = 1;
}
for (; i <= N; i += 2)
if (!u[i])
pNr++;
printf("%d\n", pNr);
return 0;
}
