Cod sursa(job #2146673)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 28 februarie 2018 09:36:53
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <fstream>

using namespace std;

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

const int bit = 32, log2 = 5;
const int nmax = 2000000/2/bit+8;
int prim[nmax], sol, n, i, j;

int main() {
    f >> n;

    for (i = 1; (i<<1) < n; i++)
        if ((prim[i>>log2] & (1 << (i&(bit-1)) )) == 0) {
            sol++;
            for (j = ((i*i)<<1); (j<<1) < n; j += (i<<1)+1)
                prim[i>>log2] |= (1 << (i&(bit-1)));
        }

    g << sol;
    return 0;
}