#pragma once

#include <iostream>

class PrimeNumberGenerator {
 public:
    explicit PrimeNumberGenerator(int start) : start(start) {
        while (!Sieve()) {
            this->start = GetNextPrime();
        }
        prime = true;
	}
bool Sieve() {
    if (start == 2 || start == 3) {
        return true;
    } else if (!(start % 2) || !(start % 3) || start == 1) {
        return false;
    }
    for (int div = 5; div <= sqrt(start); div += 2) {
        if (!(start % div)) {
            return false;
        }
    }
    return true;
}
int GetNextPrime() {
    if (prime) {
        prime = false;
        return start;
    }
    do {
        ++start;
    } while (!Sieve());
    return start;
}
int start;
bool prime;
};