我必须编写一个程序,输入一个数字并输出它的最高除数,然后输出除数的最高除数,依此类推,直到它达到素数。但我不断收到:“primefinder.exe 中 0x00eb1504 处未处理的异常:0xC0000094:整数除以零。”
我猜是“num%i”导致了它,但“i”不能为零,因为它是“num/2”。
#include <iostream>
using namespace std;
int main(){
unsigned int i=666, num;
cout << "Enter number";
cin >> num;
while(i>1){
i = num/2;
while(num % i == 0){
i--;
}
cout << i << endl;
num=i;
}
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
正如 ooga 在他的评论中提到的,由于整数数学,1/2(和 0/2)将等于零。
为了避免此处被 0 除,请更改cin >> num;为:
do
{
cin >> num;
} while (num <= 1);
Run Code Online (Sandbox Code Playgroud)
这将持续提示,直到输入有效的号码。
编辑: Cornstalk 的答案正确地指出你必须用 保护最里面的 while 循环i > 0 && num % i == 0。
| 归档时间: |
|
| 查看次数: |
14695 次 |
| 最近记录: |