bool isPrime(int n) { 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) {} int GetNextPrime() { if (current_number <= 1 && !is_changed) { current_number++; is_changed = true; return 2; } if (isPrime(current_number) && !is_changed) { is_changed = true; return current_number; } int current_prime = current_number; bool prime_is_founded = false; while (!prime_is_founded) { current_prime++; if (isPrime(current_prime)) { prime_is_founded = true; } } current_number = current_prime; return current_prime; } private: int current_number; bool is_changed; };