Cod sursa(job #3348243)

Utilizator filipdanieloanFilip-Daniel Oancea filipdanieloan Data 20 martie 2026 12:34:31
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 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

vector<bool> sieve(int n) {
    vector<bool> isPrime(n+1, 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;
    vector<bool> isPrime = sieve(n);

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

    cout << cnt << '\n';

    return 0;
}