我正在尝试创建一个可以进行各种数学运算的程序,我想从计算给定范围内的质数开始。但是,当我尝试执行代码时,它仅返回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);
}
答案 0 :(得分:2)
此循环应从2开始,因为:
c%0
是未定义的行为
每个数字%1均为0,因此您可以了解为什么num_of_factors永远不会为0
for (int c = 2; c < num; c++) {
if (num % c == 0) {
num_of_factors++;
}
}