Cod sursa(job #2376904)

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

using namespace std;

const int NMAX = 1000001;

int primes_found;
bool sieved[NMAX];

void compute_sieve(int n) {
  primes_found = n / 2;
  sieved[0] = true;

  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) {
        if (!sieved[j]) primes_found--;
        sieved[j] = true;
      }
    }
  }
}

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

  int N;
  cin >> N;

  compute_sieve(N);
  cout << primes_found;
}