Cod sursa(job #1133244)

Utilizator vlad.rusu11Rusu Vlad vlad.rusu11 Data 4 martie 2014 17:37:30
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#define NMax 200000/2
using namespace std;

int N;
char v[NMax];

int getTheNumber(int x)
{
    int nr = 1, i, j;

    for(i = 1 ; (i << 1) + 1 <= N ; ++i)
    {
        if((v[i >> 3] & (1 << (i & 7))) == 0)
        {
            for(j = ((i * i) << 1) + (i << 1) ; (j << 1) + 1 <= N ; j += (i << 1))
                v[j >> 3] |= (1 << (j & 7));
            ++nr;
        }
    }

    return nr;
}

int main()
{
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");

    fin >> N;

    fout << getTheNumber(N);

    fin.close();
    fout.close();
    return 0;
}