用 JavaScript 找到两个数字,其和等于剩下的和


假设我们的问题如下

我们有一系列从 1 到任意数字(设为 num)的数字。我们必须从该系列中挑选出两个数字(设为 m 和 n),使得

sum(1 to num) - (m + n) = m * n

最后,我们应该返回一个包含所有此类分组的数组。

例如,−

如果输入如下,−

const num = 10;

则输出应为,−

const output = [
   [7, 6]
];

因为 sum(1 to 10) = 55

并且,

55 - (6 + 7) = 6 * 7 = 42

示例

代码如下,−

 在线演示

const num = 10;
const pickNumbers = num => {
   const sum = (num) * (num + 1) * (.5);
   const results = [];
   for (let n = 1; n <= num; n++) {
      let first = sum - n;
      let second = n + 1;
      if (first % second === 0) {
         let m = first / second;
         if (m < num && m !== n && results.every(group => group[0] + group[1]
         !== m + n)){
            results.push([m, n]);
         }
      }
   }
   return results;
}
console.log(pickNumbers(10));

输出

控制台中的输出如下,−

[
   [7, 6]
]

更新于:2021-2 月 22 日

255 次浏览

职业跃迁

完成课程以获得认证

开始
广告