问题是找到最小的偶数,该偶数可以被17和32整除,并且平方根大于120。

这段代码输出32,这显然是不正确的。谁能发现我的错误?

#include <iostream>
#include <math.h>
#include <stdio.h>

using namespace std;

int main()
{
    int i = 1;
    if(i%2!=0){
        i++;
    }
    while(i%17!=0 && i%32!=0 && sqrt(i)<120){
        i+=2;
    }
    cout<<i<<endl;
}

最佳答案

i%17!=0 && i%32!=0 && sqrt(i)<120这是问题所在。您的停止条件应为:

while(不是(不能被17整除并可以被18整除并且其根数超过120))。

这等于:

while(!(i%17==0 && i%32==0 && sqrt(i)>120))


甚至使用Demorgan Law更短:

while(i%17!=0 || i%32!=0 || sqrt(i)<=120)

关于c++ - 代码中的运行时错误,用于解决最小甚至可除的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41929969/

10-13 05:07