我最近(非常,最近)已经开始使用C ++编程了。我正在编写一个程序来查找prime
以下的最高素数。但是,当我执行代码时,没有显示任何内容,并且在控制台中它会显示:
Process returned -1 (0xFFFFFFFF) execution time : 0.409 s
Press ENTER to continue.
我已经尝试了一些调试,而且我已经发现有问题的部分是第17-19行(if
声明),但我无法弄清楚我是什么&# 39;我做错了。
C ++
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
//cout << "maybe here?";
int prime = 1000;
//cout << "here";
while(true){
//cout << "here2";
int testr = ceil(sqrt(prime));
cout << testr;
bool isprime = true;
for(int i = 0; i < testr; i++){
cout << i << " ";
if(testr % i == 0){
isprime = false;
}
}
if(isprime){
break;
}else{
prime--;
}
}
cout << prime;
}
感谢任何和所有帮助!谢谢!
其他信息: 我在Mac OSX 64位上使用Code :: Blocks。我以前习惯用Java编程,所以它可能只是一个我不知道的C ++。
答案 0 :(得分:5)
相当多的问题。
1)您的问题的答案&#34;找到prime
&#34;以下的最低素数?是2,无需编程。
2)假设您想要找到prime
以下的最高素数,您应该从prime - 1
向下测试所有数字。
3)循环的第一次迭代:
for(int i = 0; i < testr; i++){
cout << i << " ";
if(testr % i == 0){
会导致异常:除以0。
答案 1 :(得分:1)
原因是你在for循环中尝试除以0 ,你应该从2开始。看看这个,我认为它是最佳的。
bool isPrime(int n) {
if(n<2)
return false;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}