Cod sursa(job #2596209)

Utilizator avtobusAvtobus avtobus Data 9 aprilie 2020 14:16:53
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <bits/stdc++.h>

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

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
const int INF = 0x3f3f3f3f;

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

const int Nmax = 2000666;
char prime[Nmax];

int main(void) {
  int N;
  fin >> N;
  memset(prime, 1, N);

  for(int p = 2; 1ll*p*p <= N; p++) {
    if (prime[p]) {
      for(ll k = 1ll * p * p; k <= N; k += p) { prime[k] = 0; }
    }
  }
  int res = 0;
  for(int i = 2; i <= N; i++) {
    if (prime[i]) { res++; }
  }
  fout << res << endl;

  return 0;
}