我正在尝试解决Project Euler 问题 9:
毕达哥拉斯三元组是三个自然数的集合,a < b < c,其中,a2 + b2 = c2
例如,32 + 42 = 9 + 16 = 25 = 52。
恰好存在一个毕达哥拉斯三元组,其 a + b + c = 1000。求积 abc。
我在Wikipedia上查找了找到毕达哥拉斯三元组的公式,并试图将其翻译成代码。问题是代码输出了错误的答案,但我认为代码是正确的。
var a, b, c;
var pos1, pos2, pos3;
var ans1, ans2, ans3;
for(var n=2; n<=20000; n++) {
a = 2 * n + 1;
b = 2 * n * (n +1);
c = 2 * n * (n +1) + 1;
if(a<b<c) {
if(a^2 + b^2 === c^2) {
pos1 = a;
pos2 = b;
pos3 = c;
}
if(a + b + c ===1000) {
ans1 = a;
ans2 = b;
ans3 = c;
}
}
}
console.log(ans1 + " " + ans2 + " " + ans3);