Cod sursa(job #2217483)

Utilizator andrei.arnautuAndi Arnautu andrei.arnautu Data 30 iunie 2018 16:34:09
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
/**
  *  Worg
  */
#include <bitset>
#include <cstdio>

FILE *fin = freopen("ciur.in", "r", stdin); FILE *fout = freopen("ciur.out", "w", stdout);

const int MAX_N = 2e6 + 5;

/*-------- Data --------*/
int n;
std::bitset<MAX_N > v;
/*-------- --------*/

int ErathostenesSieve() {
  for(int i = 3; i * i <= n; i += 2) {
    if(!v[i]) {
      for(int j = i * i; j <= n; j += 2 * i) {
        v[j] = 1;
      }
    }
  }

  int countPrime = 1;
  for(int i = 3; i <= n; i += 2) {
    countPrime += (v[i] == 0);
  }

  return countPrime;
}

int main() {
  scanf("%d", &n);

  printf("%d\n", ErathostenesSieve());
  return 0;
}