在Project Euler的问题9中,我遇到了一个问题:无限循环。
这是我的代码:
#include <iostream>
#include <cmath>
bool isPythagorean(int a, int b, int c);
int main(){
int a;
int aa;
int b;
int bb;
int c;
for(a = 0; a <= 1000; a++){ /*a loop*/
aa = a;
for(b = aa; b <= 1000; b++){ /*b loop*/
bb = b;
for(c = bb; c <= 1000; c++){
if(isPythagorean(a,b,c)){
if(a + b + c == 1000){
std::cout << (a * b) * c;
return 0;
}
else
continue;
}
}
}
return 1;
}
bool isPythagorean(int a, int b, int c){
int Pa = (int) pow(a, 2);
int Pb = (int) pow(b, 2);
int Pc = (int) pow(c, 2);
if(a < b && b < c){
if(Pa + Pb == Pc)
return true;
else
return false;
}
else
return false;
}
由于每个帮助白痴写这篇文章的人都提供了礼貌,代码已被更改,但错误仍然存在:
运行代码时,不会向终端输出任何内容。有人可以告诉我这里出了什么问题吗?
(我是个白痴;感谢每个看到这个的人。)
谢谢你,istrandjev注意到一大堆不好的代码。
谢谢你,Blastfurnace注意到这个愚蠢的错误。
答案 0 :(得分:0)
我没有太多你想要应用的逻辑。什么是%1 == 0&amp;&amp; b%1 == 0&amp; c%1 == 0检查?你知道,如果(真实),你可以简单地写出来。该周期何时结束?如果其中一个条件是&gt;三元组如何被认为是毕达哥拉斯。 c然后你想要一个* a + b * b == c * c?