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;
};