Cod sursa(job #2028020)

Utilizator rangal3Tudor Anastasiei rangal3 Data 26 septembrie 2017 23:39:11
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <bitset>
#define in "ciur.in"
#define out "ciur.out"
#define N 2000003
using namespace std;

ifstream fin(in);
ofstream fout(out);

int n;
bitset<N> prim;

void Ciur(const int &n)
{
    prim[1] = 1;
    for(int i=4; i<=n; i+=2)
        prim[i] = 1;
    for(int i=3; i<=n; i+=2)
        if(!prim[i])
            for(int d = i*i; d<=n; d+=2*i)
                prim[d] = 1;
    // 0 - prim
}

int main()
{
    fin>>n;
    Ciur(n);
    int rez = 0;
    for(int i=1; i<=n; ++i)
        rez += 1-prim[i];
    fout<<rez;

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