bool isPrime(int n) { if (n <= 1) { return false; } if (n <= 3) { return true; } for (int i = 2; i <= n / 2; i++) { if (n % i == 0) { return false; } } return true; } class PrimeNumberGenerator { public: explicit PrimeNumberGenerator(int start) { current_number = start; while (!isPrime(current_number)) { current_number = GetNextPrime(); } start_is_prime = true; } int GetNextPrime() { if (start_is_prime) { start_is_prime = false; return current_number; } if (current_number <= 1) { current_number = 2; return current_number; } bool prime_is_founded = false; while (!prime_is_founded) { current_number++; if (isPrime(current_number)) { prime_is_founded = true; } } return current_number; } private: int current_number; bool start_is_prime; };