class PrimeNumberGenerator { private: int start; public: explicit PrimeNumberGenerator(int start); int GetNextPrime(); }; bool isPrime(int n) { if (n == 2) return true; if (n < 2 || n % 2 == 0) return false; for (int i = 3; i * i <= n; i += 2) if (n % i == 0) return false; return true; } int easy(int N) { for (int i = N + 1; ; i++) if (isPrime(i)) return i; } PrimeNumberGenerator::PrimeNumberGenerator(int start) : start(start) { } int PrimeNumberGenerator::GetNextPrime() { int tmp; if (isPrime(start)) { tmp = start; start = easy(start); return tmp; } start = easy(start); return start++; }