Cod sursa(job #3149922)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 13 septembrie 2023 17:24:38
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

using namespace std;

const int NMAX = 2e6;

int s[NMAX / 2 + 1];
constexpr int sieve() {
    for (int i = 3; i * i <= NMAX; i += 2) {
        if (s[i / 2]) continue;
        for (int j = i * i; j <= NMAX; j += 2 * i) s[j / 2] = 1;
    }
    for (int i = 3; i <= NMAX; i += 2) s[i / 2] += s[i / 2 - 1];

    const int _ = 0;
    return _;
}

const int _ = sieve();

int main() {
    ifstream cin("ciur.in");
    ofstream cout("ciur.out");

    int n; cin >> n;
    if (n == 2) cout << 1 << '\n';
    else {
        int odd_not_primes = s[n / 2];
        int even_not_primes = n / 2 - 1;
        cout << n - 1 - odd_not_primes - even_not_primes << '\n';
    }

    return 0;
}