我想寫一個代碼,找到比用戶的輸入更低的完美數字。 樣品正確的輸出的:爲什麼我會收到錯誤「浮點異常」?
輸入正整數: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;
}
}
您正在計算x%0. – 2013-04-21 17:42:07
如果您發佈了真實的錯誤消息,這將有所幫助。我很確定沒有編譯器會說「接受」。在代碼中只有整數的浮點錯誤也有點奇怪。 – 2013-04-21 17:42:45
「浮點收集」 計算進行到x%1。不是嗎? 奇怪的是,只有int和bool值纔得到該錯誤消息。這就是爲什麼我問這個問題:P – user2304913 2013-04-21 18:03:56