Cod sursa(job #3348244)

Utilizator filipdanieloanFilip-Daniel Oancea filipdanieloan Data 20 martie 2026 12:40:17
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
using namespace std;

#ifndef LOCAL
ifstream fin("ciur.in");
ofstream fout("ciur.out");
#define cin fin
#define cout fout
#endif

constexpr int NMAX = 2e6+1;
bitset<NMAX> sieve(int n) {
    bitset<NMAX> isPrime(true);
    isPrime[0] = isPrime[1] = false;

    for(int i = 2; i * i <= n; ++i) {
        if(isPrime[i]) {
            for(int j = i * i; j <= n; j += i)
                isPrime[j] = false;
        }
    }

    return isPrime;
}

signed main() {
    int n; cin >> n;
    bitset<NMAX> isPrime = sieve(n);

    int cnt = 0;
    for(int i = 2; i <= n; ++i) {
        cnt += isPrime[i];
    }

    cout << cnt << '\n';

    return 0;
}