C++中给定范围内素数计算问题

C++中给定范围内素数计算问题,c++,math,C++,Math,我正在尝试创建一个可以进行各种数学运算的程序,我想从计算给定范围内的素数开始。但是,当我尝试执行代码时,它只返回退出状态-1。该程序有什么问题,如何修复 #include <iostream> #include <vector> using namespace std; void getPrimes(int min, int max) { int range = max - min; std::vector< int > possible_va

我正在尝试创建一个可以进行各种数学运算的程序,我想从计算给定范围内的素数开始。但是,当我尝试执行代码时,它只返回退出状态-1。该程序有什么问题,如何修复

#include <iostream>
#include <vector>

using namespace std;

void getPrimes(int min, int max) {

  int range = max - min;

  std::vector< int > possible_values;

  for (int q = 0; q < range; q++) {

    possible_values.push_back(min + q);

  }

  for (int i = 0; i < range; i++) { 

    int num_of_factors = 0;
    int num = possible_values.at(i);

    for (int c = 0; c < num; c++) {
      if (num % c == 0) {
        num_of_factors++;
      }
    }

    if (num_of_factors == 0) {
      std::cout << num << endl;
    }
  }
}

int main() {

  int min, max;

  std::cout << "min: ";
  std::cin >> min;

  std::cout << "max: ";
  std::cin >> max;

  getPrimes(min, max);
}

此循环应从2开始,因为:

c%0是未定义的行为

每个数字%1都是0,因此您可以了解为什么\u因子的num\u从不为0

for (int c = 2; c < num; c++) {
    if (num % c == 0) {
        num_of_factors++;
    }
}

num%c您正在除以0。如果在这个表达式中c为0,您预计会发生什么:如果num%c==0{?您可能会发现研究分段素数筛很有帮助。