Cod sursa(job #927328)

Utilizator vercasAlexandru Mihai Maftei vercas Data 25 martie 2013 18:56:36
Problema Ciurul lui Eratosthenes Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <bitset>

using namespace std;

int N, R = 0;
bitset<123> sir;

int main()
{
    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);

    scanf("%d", &N);
    sir.set();

    int p = 2, i;

    while ((p * p) <= N)
    {
        for (i = 2; (i * p) <= N; i++)
            sir[i * p] = 0;
            //  0 = nu e prim!

        for (++p; (p * p) <= N; p++)
            if (sir[p]) //  Presupun ca e mai rapid decat !sir[p]... De aia am setat tot la 1 initial.
                break;
    }

    for (i = 2; i < N; i++)
        if (sir[i]) R++;

    printf("%d", R);

    return 0;
}