查詢所有滿足奇偶位置數字和分別能被給定數字整除的n位數 - JavaScript


我們需要編寫一個 JavaScript 函式,該函式接收三個數字作為輸入。假設這三個數字為 a、b 和 n。

我們的任務是找到所有 n 位數,這些數字的偶數位置數字之和以及奇數位置數字之和分別能被 a 和 b 整除。最後,我們必須返回一個包含所有所需數字的陣列,如果沒有任何匹配的數字,則陣列應該為空。

示例

以下是程式碼 -

const indexSum = (num, sumOdd = 0, sumEven = 0, index = 0) => {
   if(num){
      if(index % 2 === 0){
         sumEven += num % 10;
      }else{
      sumOdd += num % 10;
   };
   return indexSum(Math.floor(num / 10), sumOdd, sumEven, ++index);
   };
   return {sumOdd, sumEven};
};
const divides = (b, a) => a % b === 0;
const countNum = (n, first, second) => {
   let start = Math.pow(10, (n-1));
   const end = Math.pow(10, n)-1;
   const res = [];
   while(start <= end){
      const { sumEven, sumOdd } = indexSum(start);
      const condition = divides(first, sumEven) && divides(second,sumOdd);
      if(condition){
         res.push(start);
      };
      start++;
   };
   return res;
};
console.log(countNum(3, 5, 3));

輸出

這將在控制檯中產生以下輸出 -

[
   104, 109, 134, 139, 164, 169, 194, 199, 203,
   208, 233, 238, 263, 268, 293, 298, 302, 307,
   332, 337, 362, 367, 392, 397, 401, 406, 431,
   436, 461, 466, 491, 496, 500, 505, 530, 535,
   560, 565, 590, 595, 604, 609, 634, 639, 664,
   669, 694, 699, 703, 708, 733, 738, 763, 768,
   793, 798, 802, 807, 832, 837, 862, 867, 892,
   897, 901, 906, 931, 936, 961, 966, 991, 996
]

更新於: 2020年9月30日

277 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告