Cod sursa(job #831548)

Utilizator vgabi94Vaduva Gabriel vgabi94 Data 8 decembrie 2012 18:47:21
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
using namespace std;

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

const int SIZE = 2000000/2+1;
bool composite[SIZE];

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

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

    return 0;
}