Cod sursa(job #2718671)

Utilizator QwertyDvorakQwerty Dvorak QwertyDvorak Data 8 martie 2021 23:09:33
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;

const string FILENAME = "ciur";

ifstream fin(FILENAME + ".in");
ofstream fout(FILENAME + ".out");

bitset<2000001> compound;

int n;

int sieve()
{
    int ans = 0;
    compound[0] = compound[1] = 1;
    for(int i = 4; i <= n; i+= 2)
        compound[i] = true;
    for(int i = 3; i * i <= n; i += 2)
        if(!compound[i])
            for(int j = i * i; j <= n; j += i + i)
                compound[j] = true;
    for(int i = 2; i <= n; i++)
        if(!compound[i]) ans++;
    return ans;
}

int main()
{
    fin >> n;
    fout << sieve() << "\n";
    fin.close();
    fout.close();
    return 0;
}