Cod sursa(job #2657317)

Utilizator PletoPletosu Cosmin-Andrei Pleto Data 10 octombrie 2020 12:40:54
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>
#define VALUE(i) (p[(i) / 8] & (1 << ((i) % 8)))
#define SET(i) (p[(i) / 8] |= (1 << ((i) % 8)))
#define UNSET(i) (p[(i) / 8] &= ~(1 << ((i) % 8)))

using namespace std;

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

char p[2000005 / 8 + 1];
int sol = 1;

void ciur(int N) {
    for (int i = 3; i * i <= N; i += 2) {
        for (int j = i * i; j <= N; j += i) {
            SET(j);
        }
    }
    for (int i = 3; i <= N; i += 2) {
        if (VALUE(i) == 0) {
            sol += 1;
        }
    }
}

int main() {
    int N;
    fin >> N;
    ciur(N);
    fout << sol << '\n';
}