Cod sursa(job #2416595)

Utilizator pickleVictor Andrei pickle Data 27 aprilie 2019 19:30:28
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <bits/stdc++.h>

#define rep(i, n) for(int i = 0; i < n; i++)
#define REP(i,a,b) for(int i = a; i < b; i++)

using namespace std;
typedef pair<int, int> pii;
// const int INF = 0x3f3f3f3f;
const int Nmax = 2000666;

char isPrime[Nmax];
int N;

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

  rep(i, Nmax) { isPrime[i] = 1; }
  cin >> N;
  for (int p = 2; p*p <= N; p++) {
    if (isPrime[p]) {
      for (int n = p*p; n <= N; n += p) { isPrime[n] = 0; }
    }
  }
  int x = 1;
  for (int i = 3; i <= N; i += 2) {
    isPrime[i] ? ++x : 0;
  }

  cout << x << endl;

  return 0;
}