C++;-控制台中不显示任何内容,不显示任何错误,返回-1 我最近(最近,最近)已经进入C++编程。我正在写一个程序来查找下面的最高质数prime。但是,当我执行代码时,不会显示任何内容,并且在控制台中会显示以下内容: Process returned -1 (0xFFFFFFFF) execution time : 0.409 s Press ENTER to continue.

C++;-控制台中不显示任何内容,不显示任何错误,返回-1 我最近(最近,最近)已经进入C++编程。我正在写一个程序来查找下面的最高质数prime。但是,当我执行代码时,不会显示任何内容,并且在控制台中会显示以下内容: Process returned -1 (0xFFFFFFFF) execution time : 0.409 s Press ENTER to continue.,c++,debugging,C++,Debugging,我尝试了一些调试,我发现有问题的部分是第17-19行(ifif语句),但我不知道我做错了什么 C++ #include <iostream> #include <cmath> using namespace std; int main() { //cout << "maybe here?"; int prime = 1000; //cout << "here"; while(true){ //cou

我尝试了一些调试,我发现有问题的部分是第17-19行(if
if
语句),但我不知道我做错了什么

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;
}
#包括
#包括
使用名称空间std;
int main()
{
//可能有很多问题

1) 您的问题“在
素数下查找最低素数”的答案是2,无需编程

2) 假设您想在
素数
下面找到最大素数,您应该测试
素数-1
以下的所有数字

3) 循环的第一次迭代:

for(int i = 0; i < testr; i++){
    cout << i << " ";
    if(testr % i == 0){
for(int i=0;icout原因是您试图在for循环中用0除以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;
}
bool isPrime(int n){

如果(你是怎么想出来的?@SergeyA Basic debugging-注释掉一些东西,直到你找到破坏代码的东西。@michal-这不是一个基本的调试,这叫做
trial and error
。基本调试是在调试器下一步一步地运行你的程序,并检查你变量的值。拿一支铅笔检查一下你r程序以1作为输入。看看它的错误行为。@SergeyA我现在看到了。我为犯这样一个简单的错误感到难过。我的不好。我的意思是最高。对不起。这既不是最佳的,也不正确。用
2
测试它。它对2返回真,所以它是正确的。你能详细说明你的观点吗?对不起,我忽略了ii