繁体   English   中英

在质数 C++ 程序中不断得到浮点异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM