我很清楚这个蛮力方法是坏的,我应该使用类似欧几里德公式的东西,并且最终循环不需要c = 1000 - (a + b)等......但现在我只是想让这个工作。找到一个毕达哥拉斯三重线(项目欧拉)
bool isPythagorean(int a, int b, int c) {
if((a*a + b*b) == c*c && a < b && b < c) {
cout << a << " " << b << " " << c << endl;
return true;
} else {
return false;
}
}
int main()
{
int a = 1;
int b = 2;
int c = 3;
for(a = 1; a < b; ++a) {
for(b = 2; b < c; ++b) {
for(c = 3; a + b + c != 1000 && !isPythagorean(a, b, c); ++c) {
}
}
}
return 0;
}
大部分情况下,代码的工作方式与我预期的一样。我想不通为什么它被停止害羞A + B + C = 1000
我最后的三重的是280 406,共计980
如果我删除一个< b < C检,三重变成332,249,415共计996
所有结果符合勾股定理 - 我只是不能土地+ b + C = 1000
什么在阻止我吗?
我搜索看着类似的帖子,其中没有分享我的问题。 – monkeySeeMonkeyDo 2011-03-15 21:03:34
如果你想要'a 2011-03-15 21:26:54