I'm doing question 4.11 in Bjarne Stroustrup Programming-Principles and Practice Using C++. Create a program to find all prime numbers in the range from 1 to max using a vector of primes in order(prime[2,3,5,...]). Here is my solution:
#include <iostream>
#include <string>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
bool check_prime(vector<int> &prime, int n) {
  int count = 0;
  for (int i = 0; prime[i] <= n || i <= prime.size() - 1; ++i) {
    if (n % prime[i] == 0) {
      count++;
      break;
    }
  }
  bool result = 0;
  if (count == 0)
    result = 1;
  else
    result = 0;
  return result;
}
int main() {
  vector<int> prime{2};
  int max;
  cout << "Please enter a max value:";
  cin >> max;
  for (int i = 2; i <= max; ++i) {
    if (check_prime(prime, i))
      prime.push_back(i);
  }
  for (int i = 0; i <= prime.size() - 1; ++i) {
    cout << prime[i];
    if (i <= prime.size() - 2)
      cout << ',';
  }
}
My code is working for numbers smaller than 23 but fail to work for anything bigger. If I open the program in Windows 10 the largest working number increase to 47, anything bigger than that fail to work.
 
     
     
    