Cod sursa(job #1364356)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 27 februarie 2015 17:13:53
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#include <vector>
#include <bitset>

#define Nmax 2000005

using namespace std;

bitset<Nmax> ciur;
vector<int> is_prime;
int N;

void sieve()
{
    is_prime.push_back(2);
    for(int i = 1; ((i<<1)|1) <= N; ++i)
        if(ciur[((i<<1)|1)] == 0)
        {
            is_prime.push_back(((i<<1)|1));
            for(int j = 1; ((i<<1)|1)*((j<<1)|1) <= N; ++j)
                ciur[((i<<1)|1)*((j<<1)|1)] = 1;
        }
    printf("%d\n",is_prime.size());
}

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

    scanf("%d",&N);
    sieve();

    return 0;
}