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