Cod sursa(job #1996625)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 2 iulie 2017 09:07:44
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

pair<vector<int>, vector<int>> Sieve(int n) {
    vector<int> primes;
    vector<int> divisor(n + 1);
    for (int i = 2; i <= n; ++i) {
        if (divisor[i] == 0) {
            primes.push_back(i);
            divisor[i] = i;
        }
        for (int j = 1; j <= divisor[i] && primes[j] * i <= n; ++j) {
            divisor[primes[j] * i] = j;
        }
    }
    return make_pair(primes, divisor);
}

int main() {
#ifdef INFOARENA
    ifstream cin("ciur.in");
    ofstream cout("ciur.out");
#endif
    int n; cin >> n;
    cout << Sieve(n).first.size() << '\n';
}