Cod sursa(job #2646503)

Utilizator DormeoNoapte Buna Dormeo Data 1 septembrie 2020 13:13:50
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 2000000 + 5;

vector < bool > f(DIM, true);
vector < int > prime;
vector < int > total(DIM);

void Ciur(int n)
{
    for(int i = 2; i <= n; ++i) {
        if(f[i] == true) prime.push_back(i), total[i] = total[i - 1] + 1;
        else total[i] = total[i - 1];
        for(int j = 0; j < prime.size() && i * prime[j] <= n; ++j) {
            f[i * prime[j]] = false;
            if(i % prime[j] == 0) break;
        }
    }
}

int main()
{
    int n;

    fin >> n;
    Ciur(n);
    fout << total[n];
    return 0;
}