Cod sursa(job #2722946)

Utilizator Fatu_SamuelFatu Samuel Fatu_Samuel Data 13 martie 2021 13:40:47
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <bitset>

using namespace std;

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

const int nMax = 2000000 + 10;

int n;

bitset < nMax > prim;   /// 0 -> true
                        /// 1 -> false

void Ciur()
{
    prim[1] = prim[0] = 1;

    for (int i = 4; i <= n; i += 2)
    {
        prim[i] = 1;
    }

    for (int i = 3; i * i <= n; i += 2)
    {
        if (!prim[i])
        {
            for (int j = i * i; j <= n; j += 2 * i)
            {
                prim[j] = 1;
            }
        }
    }

}

int main()
{
    fin >> n;

    int c = 0;

    Ciur();

    for (int i = 2; i <= n; i++)
    {
        c += (!prim[i]);
    }

    fout << c;

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