问题是找到最小的偶数,该偶数可以被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/