Cod sursa(job #2725495)

Utilizator avtobusAvtobus avtobus Data 19 martie 2021 04:06:56
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>
#include <bits/stdc++.h>
#include <cstddef>

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

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
// const int INF = 0x3f3f3f3f;
const int Nmax = 2'000'006;

ifstream fin {"ciur.in"};
ofstream fout {"ciur.out"};

char prime[Nmax];

int main(void) {
  // freopen("ciur.in", "r", stdin);
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(NULL);

  int N;
  fin >> N;
  for(int i = 2; i <= N; i++) {
    prime[i] = 1;
  }

  for(int p = 2; 1ll*p*p <= N; p++) {
    if (!prime[p]) continue;
    for(int q = p*p; q <= N; q += p) {
      prime[q] = 0;
    }
  }


  int ans = 0;
  for(int i = 2; i <= N; i++) ans += prime[i];

  fout << ans << '\n';
  return 0;
}