Cod sursa(job #876371)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 11 februarie 2013 19:10:51
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <bitset>
using namespace std;

ifstream in("ciur.in");
ofstream out("ciur.out");

const int size = 2000000/2 + 1;
bitset<size> isComposite;

int sieve(int n)
{
    int count = 1;
    for (int i = 1; 2*i*i + 2*i <= n; i++)
    {
        if (isComposite[i] == 0)
        {
            for (int j = 2*i*i + 2*i;  2*j + 1 <= n; j += 2*i+1)
                isComposite[j] = 1;
        }
    }
    for (int i = 1; 2*i+1 <= n; i++)
    {
        if (isComposite[i] == 0) ++count;
    }
    return count;
}

int main()
{
    int N; in >> N;
    out << sieve(N);
    return 0;
}