Pagini recente » Cod sursa (job #1913400) | Cod sursa (job #964622) | Cod sursa (job #2737451) | Cod sursa (job #3123523) | Cod sursa (job #2972404)
#include <cstdio>
#include <memory>
#include <vector>
#include <bitset>
using namespace std;
class Solver{
private:
static const int Nmax = 2000013;
bitset<Nmax> used;
int numberPrimes, N;
public:
Solver() {
freopen("ciur.in", "r", stdin);
freopen("ciur.out", "w", stdout);
}
~Solver() {
fclose(stdin);
fclose(stdout);
}
void ReadData() {
scanf("%d", &N);
}
void ComputeSieve()
{
numberPrimes = 1; // 2;
for (int i = 1; (2*i + 1) <= N; ++i)
if (used[2*i + 1] == false) {
used[2*i + 1] = true;
++numberPrimes;
for (int j = 1; (2 * i + 1) * (2 * j + 1) <= N; ++j)
used[(2 * i + 1) * (2 * j + 1)] = true;
}
printf("%d\n", numberPrimes);
}
};
int main() {
unique_ptr<Solver> s = make_unique<Solver>();
s->ReadData();
s->ComputeSieve();
return 0;
}