Pagini recente » Cod sursa (job #1102877) | preONI 2008, Clasament Runda Finala, Clasele 5-8 | Cod sursa (job #2428367) | Cod sursa (job #1440429) | Cod sursa (job #1996626)
#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] = (int)primes.size();
}
for (int j = 0; j < (int)primes.size() && j < divisor[i] && primes[j] * i <= n; ++j) {
divisor[primes[j] * i] = j + 1;
}
}
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';
}