在 JavaScript 中對陣列中的數字執行冪運算


問題

我們需要編寫一個 JavaScript 函式,該函式接收一個偶數長度的整數陣列 arr。

假設一個數字 num,其中 -

num = (arr[0] * arr[0] + arr[1] * arr[1]) * (arr[2] * arr[2] + arr[3] * arr[3]) * … * (arr[n-2] * arr[n-2] + arr[n-1] * arr[n-1])

其中 n 是陣列的長度。

我們的函式應查詢並返回一個包含兩個數字 [A, B] 的陣列,使得:-

A2 + B2 = num

例如,如果陣列為:-

[1, 2, 3, 4]

則 num = ( 1 + 4 ) * (9 + 16) = 125

則輸出應為:-

[2, 11]

因為 22 + 112 = 125

示例

以下是程式碼:-

即時演示

const arr = [1, 2, 3, 4];
const findMatchingSumArray = (arr = []) => {
   let squaredSum = 1;
   for(let i = 0; i < arr.length - 1; i += 2){
      const curr = arr[i];
      const next = arr[i + 1];
      squaredSum *= (Math.pow(curr, 2) + Math.pow(next, 2));
   };
   for(let k = 0; k * k < squaredSum; k++){
      for(let j = 0; (k * k) + (j * j) <= squaredSum; j++){
         if((k * k) + (j * j) === squaredSum){
            return [k, j];
         };
      };
   };
   return [];
};
console.log(findMatchingSumArray(arr));

輸出

以下是在控制檯中的輸出:-

[2, 11]

更新於:2021 年 4 月 19 日

363 次瀏覽

開啟您的 職業生涯

透過完成本課程獲取認證

開始學習
廣告