在 JavaScript 中求出整數平方數的平方法除數和


問題

我們要求編寫一個 JavaScript 函式,它接受由兩個數字 m 和 n 指定的範圍。

我們的函式應該找到 m 和 n 之間的整數(m 和 n 整數,如 1 <= m <= n),使得它們的平方因子的和本身就是一個平方數。

它應該返回一個子陣列陣列。子陣列將有兩個元素:第一個元素是平方因子的和是平方數的數字,然後是平方因子的和。

示例

以下為程式碼 −

 現場演示

const range = [1, 500];
const listSquared = ([m, n]) => {
   const res = [];
   for (let i = m; i <= n; ++i) {
      let sum = getDivisors(i).reduce((sum, n) => sum + n * n, 0);
      let ok = Number.isInteger(Math.sqrt(sum));
      if (ok) {
         res.push([i, sum]);
      }
   }
   return res;
}
function getDivisors (n) {
   const divisors = [];
   for (let i = 1; i <= n / 2; ++i) {
      if (n % i) {
         continue;
      }
      divisors.push(i);
   }
   return divisors.concat([n]);
}
console.log(listSquared(range));

輸出

[ [ 1, 1 ], [ 42, 2500 ], [ 246, 84100 ], [ 287, 84100 ] ]

更新於:19-4-2021

172 次瀏覽

開啟你的 職業 生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.