查找所有满足奇偶位置数字和分别能被给定数字整除的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 ]
广告