和为n的毕达哥拉斯三元组
题目
毕达哥拉斯三元组是三个自然数 a < b < c 组成的集合,并满足
a2 + b2 = c2
例如 32 + 42 = 9 + 16 = 25 = 52。
测试用例:
n=12时,返回[{a: 6, b: 8, c: 10}]
n=120时,返回[{a: 20, b: 48, c: 52},{a: 24,b: 45,c: 51},{a: 30,b: 40,c: 50}]
代码
function pythagoreanTriplet(n) {
let arr = [];
for (let i = n; i > 0; i--) {
for (let j = i - 1; j > 0; j--) {
for (let k = j - 1; k > 0; k--) {
if (i + j + k == n) {
if (fun(k, j, i)) {
arr.push({
a: k, b: j, c: i
})
}
}
}
}
}
return arr;
}
//判断是不是三元组
function fun(a, b, c) {
return Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)
}
pythagoreanTriplet(120);