和为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);
原文地址:https://www.cnblogs.com/superlizhao/p/12205581.html