Cod sursa(job #2376918)

Utilizator alexghitaAlexandru Ghita alexghita Data 8 martie 2019 18:54:24
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 1000001;

bool sieved[NMAX];

void compute_sieve(int n) {
  for (int i = 1; ((i * i) << 1) + (i << 1) <= n; ++i) {
    if (!sieved[i]) {
      for (int j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= n; 
           j += (i << 1) + 1) {
        sieved[j] = true;
      }
    }
  }
}

int main() {
  stdin = freopen("ciur.in", "r", stdin);
  stdout = freopen("ciur.out", "w", stdout);

  int N;
  cin >> N;

  compute_sieve(N);

  int primes_found = 0;

  for (int i = 0; i < N / 2; ++i) {
    if (!sieved[i]) {
      primes_found++;
    }
  }
  cout << primes_found;
}