Pagini recente » Cod sursa (job #3247531) | Cod sursa (job #1971180) | Cod sursa (job #2155172) | Cod sursa (job #2003709) | Cod sursa (job #2702576)
#include <fstream>
#include <vector>
using namespace std;
int main() {
int n;
ifstream fin("ciur.in");
fin >> n;
fin.close();
// sieve[i] = true if (i * 2 + 1)-th number is prime
vector<bool> sieve((n + 2) >> 1, true);
int no_primes_le_n = 1; // 2 is a prime
for (int i = 3; i * i <= n; i += 2) {
if (sieve[(i - 1) >> 1] == false) {
continue;
}
for (int j = i * i; j <= n; j += i) {
// we have to make sure that j is odd
if (j & 1) {
sieve[(j - 1) >> 1] = false;
}
}
}
for (int i = 3; i <= n; i += 2) {
if (sieve[(i - 1) >> 1] == true) {
no_primes_le_n++;
}
}
ofstream fout("ciur.out");
fout << no_primes_le_n;
fout.close();
return 0;
}