簡體   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