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

时间:2019-03-15 18:10:11

标签: c++ math

我正在尝试创建一个可以进行各种数学运算的程序,我想从计算给定范围内的质数开始。但是,当我尝试执行代码时,它仅返回exit status -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);
}

1 个答案:

答案 0 :(得分:2)

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

  1. c%0是未定义的行为

  2. 每个数字%1均为0,因此您可以了解为什么num_of_factors永远不会为0

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