Project Euler Problem 9を解決しようとしています:
ピタゴラスの 3 連符は、a < b < c の 3 つの自然数のセットであり、a2 + b2 = c2
たとえば、32 + 42 = 9 + 16 = 25 = 52 です。
a + b + c = 1000 であるピタゴラスの 3 連符が 1 つだけ存在します。積 abc を見つけます。
ウィキペディアでピタゴラスの三重項を見つける式を探し、それをコードに翻訳しようとしました。問題は、コードが間違った答えを出力していることですが、コードは正しいと思います。
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);