在 JavaScript 中找到由两个 n 位数字的乘积构成的最大回文数

让我们考虑数字 9009。这是一个特殊的数字,因为这是两个 2 位数字(91 和 99)相乘可以形成的最大回文数。

我们需要编写一个 JavaScript 函数,它接受一个数字 n(它指定了位数)。该函数应该简单地找到并返回可以由两个 n 位数字相乘形成的最大回文数。

示例

以下是代码 -

const largestPalindromic = num => {

   let i, n, m, d, max, sup, limit, number = 0;

   for (i = 1; i < num; i += 1) {

      number = 10 * number + 9;

   };

   max = number;

   sup = 10 * number + 9;

   const isPalindromic = n => {

      let p = 0, q = n, r;

      while (n > 0) {

         r = n % 10;

         p = 10 * p + r;

         n = Math.floor(n / 10);

      };

      return p === q;

   };

   for (n = sup * sup, m = max * max; n > m; n -= 1) {

      if (isPalindromic(n)) {

         limit = Math.ceil(Math.sqrt(n));

         d = sup;

         while (d >= limit) {

            if (n % d === 0 && n / d > max) {

               return n;

            }

            d -= 1;

         }

      }

   };

}

console.log(largestPalindromic(3));

输出结果

以下是控制台上的输出 -

906609

以上是 在 JavaScript 中找到由两个 n 位数字的乘积构成的最大回文数 的全部内容, 来源链接: utcz.com/z/338847.html

回到顶部