#pragma once
#include <vector>
#include <limits>
class PrimeNumberGenerator {
public:
explicit PrimeNumberGenerator(int start) {
a.resize(INT16_MAX, true);
a[0] = a[1] = false;
for (int64_t i = 2; i < INT16_MAX; i++) {
if (a[i]) {
for (int64_t j = i * i; j < INT16_MAX && j > 0; j += i) {
a[j] = false;
}
}
}
it = start;
}
int GetNextPrime() {
for (int64_t i = it; i < INT16_MAX; i++) {
if (a[i]) {
it = i + 1;
return i;
}
}
}
private:
std::vector<bool> a;
int64_t it;
};