C++中给定范围内素数计算问题
我正在尝试创建一个可以进行各种数学运算的程序,我想从计算给定范围内的素数开始。但是,当我尝试执行代码时,它只返回退出状态-1。该程序有什么问题,如何修复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
#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{?您可能会发现研究分段素数筛很有帮助。