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

Problem with calculating Primes within a given Range in C++

本文关键字:问题 计算 范围内      更新时间:2023-10-16

im试图创建一个执行各种数学操作的程序,我想从在给定范围内计算质数开始。但是,当我尝试执行代码时,它只是返回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);
}

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

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

  2. 每个数字%1是0

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