Cod sursa(job #2917492)

Utilizator alin.gabrielAlin Gabriel Arhip alin.gabriel Data 5 august 2022 13:55:09
Problema Ciurul lui Eratosthenes Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>
using namespace std;
 
#define N 2000001
 
ifstream f("ciur.in");
ofstream g("ciur.out");
 
int n, cnt;
bool v[N];

int main() {
    f >> n;
    int root = sqrt(n);
    // presupunem ca toate numerele sunt prime
    memset(v, 1, n);
 
    for (int i = 2; i <= root; cnt+=v[i], i++)
        // cum gasim un multiplu de k, il marcam neprim
        for (int k = i + i; k <= n; v[k] = 0, k+=i);
    // adunam celelalte numere prime
    for (int i = root + 1; i <= n; cnt += v[i], i++);

    g << cnt << "\n";
    return 0;
}