class PrimeNumberGenerator { public: explicit PrimeNumberGenerator(int start); int GetNextPrime(); private: int start_value; }; PrimeNumberGenerator::PrimeNumberGenerator(int start) { this->start_value = start; } int PrimeNumberGenerator::GetNextPrime() { while ( true ) { int cnt = 0; for ( int i = 1 ; i <= start_value ; i++ ) { if ( start_value % i == 0 ) { cnt++; } if ( cnt > 2 ) { break; } } if ( cnt <= 2 && this->start_value != 1 ) { int returned = this->start_value; this->start_value++; return returned; } this->start_value++; } }