C ++ - 控制台中没有显示任何内容,没有显示错误,返回-1

时间:2016-01-29 21:06:16

标签: c++ debugging

我最近(非常,最近)已经开始使用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 ++。

2 个答案:

答案 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;
}