我很清楚這個蠻力方法是壞的,我應該使用類似歐幾里德公式的東西,並且最終循環不需要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