#pragma once
#include <vector>
class PrimeNumberGenerator {
private:
int start;
int barion = 200;
const int size = 1000000;
bool arr[1000000];
public:
explicit PrimeNumberGenerator(int start) : start(start < 2 ? 2 : start) {
arr[0] = arr[1] = false;
for (int i = 0; i < size; arr[i++] = true);
for (int i = 2; i * i< size; i++) {
if (i * i <= size) {
for (int j = i * i; j * j < size; j += i) {
arr[j] = false;
}
}
}
}
int GetNextPrime() {
int cs;
for (cs = this->start; cs <= this->start + barion; cs++) {
if (arr[cs] == true) break;
}
this->start = cs + 1;
return cs;
}
};