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