我一直在尝试创建自己的主要检查功能,虽然奇怪的是当我调用isPrime(7)它返回1时,这很好,但是当我调用isPrime(9)时它会给我以下错误:
'Mathematics.exe':已加载'C:\ Documents and Settings\mbryant\My Documents\Visual Studio 2010\Projects\Mathematics\Debug\Mathematics.exe',已加载符号.'Mathematics.exe':加载'C:\ WINDOWS\system32 \ntdll.dll',找不到或打开PDB文件'Mathematics.exe':加载'C:\ WINDOWS\system32\kernel32.dll',找不到或者打开PDB文件'Mathematics.exe':加载'C:\ WINDOWS\system32\msvcp100d.dll',加载符号.'Mathematics.exe':已加载'C:\ WINDOWS\system32\msvcr100d.dll',已加载符号.线程'Win32 Thread'(0x6ec)已退出,代码为-1073741510(0xc000013a).
这是代码:
#include <iostream>
using namespace std;
bool isPrime(int x){
int b = 0;
int i = 2;
if(x == 2){
return 1;
}
if (x > 2){
while(i < x){
if ( (x % i) != 0){
b = b + 1;
i = i + 1;
}
}
if (b > 0){
return 1;
} if (b == 0){
return 0;
}
}
}
int main(){
cout << isPrime(9) << endl;
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助解决这个问题.
根据:
从全局来看,退出代码0xC000013A表示应用程序因CTRL + C或关闭命令提示符窗口而终止
我复制,编译并运行了你的代码.有了x=9,代码while永远停留在循环中,所以我不得不使用关闭按钮(右上角的[x]按钮)关闭程序.这产生了0xc000013a错误代码.(x=7程序不会卡在while循环中,因此可以正常退出.)
更具体地说,因为x=9程序被卡在while循环中,因为i=3那时(x % i) == 0(9 mod 3 = 0)并且语句i = i + 1永远不会执行.所以i从不增加超过3和i < x(3 <9)总是如此.
因此,当前问题是您的代码永远不会退出(for x=9)而您必须停止它,大概是通过单击关闭按钮.但更大的问题是你的逻辑很糟糕而且你的程序没有像你想象的那样工作.
例如,当x=9和i=2,然后(x % i) != 0和那导致b = b + 1.这意味着b > 0你的程序应该返回1,在你的情况下,你表示这意味着素数x=7.但9不是素数.
此外,isPrime有返回类型,bool但你正在返回int.
| 归档时间: |
|
| 查看次数: |
5210 次 |
| 最近记录: |