[英]Keep getting floating point exception in prime number c++ program
我正在尝试创建一个程序,该程序采用用户整数并确定该整数是否为素数。 但是,当我尝试输入一个数字时,出现浮点异常。 这是为什么? 我制作了一个数组,以便遍历每个数字直到整数以检查其可整性这里是代码:
#include <iostream>
using namespace std;
bool isPrime(int n)
{
int arr[n];
if (n == 1 or n == 2) {
return true;
}
for (int i = 1; i < n; i++){
if (n % arr[i] == 0) {
return false;
}
else {
return true;
}
}
}
int main()
{
int user_input;
cout << "Enter an integer to test if it's prime: ";
cin >> user_input;
bool value = isPrime(user_input);
string true_false;
if (value == 1) {
true_false = "true";
}
else {
true_false = "false";
}
cout << true_false;
return 0;
}
致命异常发生在if (n % arr[i] == 0) {
。 此数组指向未初始化的内存,其中偶尔会包含 0,从而导致除以零错误。 感谢nm 。 指出我的错误。
使用 C 习语,例如int arr[n];
其中n
在编译时不是已知常量会导致常见的 C 编程问题,就像这样。 C++ 具有可用于避免这些问题的功能。 我建议你学习和使用现代 C++。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.