Pagini recente » Cod sursa (job #1039255) | Cod sursa (job #904575) | Cod sursa (job #440958) | Cod sursa (job #1615324) | Cod sursa (job #2606671)
#include <iostream>
#include <fstream>
#include <vector>
class Eras_sieve {
public:
explicit Eras_sieve(int nn, bool gen_now = 1) : n(nn) {
primes.resize(n + 1, 1);
if (gen_now) generate();
}
bool isPrime(int i) {
return primes[i];
}
private:
void generate() {
primes[0] = false;
primes[1] = false;
for (int i = 2; i <= n; i++) {
if (primes[i] == 1) {
for (int j = 2 * i; j <= n; j += i)
primes[j] = 0;
}
}
}
int n;
std::vector<bool> primes;
};
int main() {
std::ifstream fin("ciur.in");
std::ofstream fout("ciur.out");
int n;
fin >> n;
Eras_sieve ciur(n);
int k = 0;
for (int i = 2; i <= n; i++)
if (ciur.isPrime(i)) k++;
fout<< k;
}