0

ユーザーの入力よりも低い完全数を見つけるコードを作成しようとしています。正しい出力のサンプル:

正の整数を入力してください: 100
6 は完全数
です 28 は完全数です
100 以下の完全数はもうありません

しかし、コードを実行するとエラーが発生しますFloating point exception

理由がわかりません。私は何を間違っていますか?

これが私のコードです:

#include <iostream>

using namespace std;

bool isAFactor(int, int);

int main(){
    int x, y;
    int countOut, countIn;
    int userIn;
    int perfect = 0;

    cout << "Enter a positive integer: ";
    cin >> userIn;

    for(countOut = 0; countOut < userIn; countOut++){
        for(countIn = 1; countIn <= countOut; countIn++){
            if(isAFactor(countOut, countIn) == true){
                countOut = countOut + perfect;
            }
        }

        if(perfect == countOut){
            cout << perfect << " is a perfect number" << endl;
        }

        perfect++;
    }

    cout << "There are no more perfect numbers less than or equal to " << userIn << endl;

    return 0;
}


bool isAFactor(int inner, int outer){
    if(outer % inner == 0){
        return true;
    }

    else{
        return false;
    }
}
4

2 に答える 2

1

引数が交換されるだけです。isAFactor(countOut, countIn)で呼び出す必要があるときと同じように関数を呼び出していますisAFactor(countIn, countOut)

于 2013-04-21T18:14:47.840 に答える