Cod sursa(job #283618)

Utilizator victorsbVictor Rusu victorsb Data 19 martie 2009 14:08:49
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <bitset>

using namespace std;

#define FIN "ciur.in"
#define FOUT "ciur.out"
#define MAX_N 2000015

int N;
bitset<MAX_N> prim;

void read() {
    scanf("%d", &N);
}

void solve() {
    prim.set();
    prim[0] = prim[1] = 0;
    for (int i = 2; i * i <= N; ++i)
        if (prim[i])
            for (int j = i * i; j <= N; j += i)
                prim[j] = 0;

    int ret = 0;
    for (int i = 0; i <= N; ++i)
        ret += prim[i];
    printf("%d\n", ret);
}

int main() {
    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);
    read();
    solve();
    return 0;
}