用 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 次瀏覽

職業躍遷

完成課程以獲得認證

開始
廣告
© . All rights reserved.