用 JavaScript 查找由两个 n 位数的乘积生成的最大的回文数


在给定的问题陈述中,我们必须借助 Javascript 功能找到由两个 n 位数的乘积生成的最大的回文数。因此,我们将创建两个函数来完成此任务。第一个函数是查找最大的回文数,第二个函数是检查该数是否是回文数。

什么是回文数?

在给定的问题陈述中使用了“回文”一词!!让我们首先了解这个词的意思。回文是指当我们必须定义一个字符串或数字时使用的术语,该字符串或数字在反转后看起来相同。例如,我们有像 44、121、202、404、909 这样的数字,如果我们反转这些数字,反转后——44、121、202、404、909,它看起来与输入字符串相似。因此,这被称为回文。

理解问题

眼前的问题是利用 Javascript 找到最大的回文数。我们的主要任务是找到最大的回文数,它应该是两个 n 位数的乘积。

给定问题的逻辑

为了解决这个问题,我们将迭代所有可能的 n 位数组合。因此,我们将从最大的可能的数字开始。然后,我们将计算每一对的乘积,并检查该数是否是回文数。如果该数是回文数,我们将将其与到目前为止找到的最大回文数进行比较。我们将更新其值。因此,我们将使用嵌套循环和另一个函数来检查回文。

算法

步骤 1:由于我们必须找到最大的回文数,它应该是两位数的乘积。因此,为了完成此任务,我们将定义两个函数。第一个函数将查找最大的回文乘积,第二个函数将查找该数是否是回文数。第一个函数将接受一个参数 n,它是两个因子的位数。第二个函数将接受一个参数,即我们要检查其是否是回文数的数字。

步骤 2:第一个函数将初始化最大的 n 位数 maxNum 和最小的 n 位数 minNum。

步骤 3:定义变量后,我们将使用一个循环遍历从 maxNum 到 minNum 的数字,并且我们还将借助嵌套循环检查它们的乘积。

步骤 4:在此步骤中,如果我们找到了回文乘积,并且它大于当前的最大回文数,我们将将其更新为 largestPalindrome 变量。

步骤 5:在此函数的最后一步,我们将获得最大的回文数。

步骤 6:在第二个函数中,首先我们将给定的数字转换为字符串,然后我们将比较字符串开头和结尾处的字符。

步骤 7:如果字符串的字符不匹配,我们将返回值为 false,这表明该数不是回文数。如果所有字符都匹配,我们将返回值为 true,这表明该数是回文数。

示例

//Function to find the largest palindrome product
function largestPalindromeProduct(n) {
   const maxNum = Math.pow(10, n) - 1;
   const minNum = Math.pow(10, n - 1);
   let largestPalindrome = 0;

   for (let i = maxNum; i >= minNum; i--) {
      for (let j = i; j >= minNum; j--) {
         const product = i * j;
         if (isPalindrome(product) && product > largestPalindrome) {
            largestPalindrome = product;
            break;
         }
      }
   }

   return largestPalindrome;
}

//Function to check that the number is palindrome
function isPalindrome(num) {
   const str = num.toString();
   const len = str.length;

   for (let i = 0; i < Math.floor(len / 2); i++) {
      if (str[i] !== str[len - 1 - i]) {
         return false;
      }
   }

   return true;
}

const n = 3;
const n1 = 2;
const largestPalindrome = largestPalindromeProduct(n);
const largestPalindrome1 = largestPalindromeProduct(n1);
console.log(`The largest palindrome made from the product of two ${n}-
digit numbers is: ${largestPalindrome}`);
console.log(`The largest palindrome made from the product of two ${n1}-
digit numbers is: ${largestPalindrome1}`);

输出

The largest palindrome made from the 
product of two 3-digit numbers is: 906609
The largest palindrome made from the product of two 
2-digit numbers is: 9009

复杂度

由两个 n 位数的乘积构成的最大回文数的时间复杂度为 O(n^2),其中 n 是循环中完成的迭代次数。复杂度的原因为我们使用了嵌套循环。

结论

在我们提供的代码中,有效地解决了由两个 n 位数的乘积生成的查找最大回文数的问题。我们已经迭代了所有可能的 n 位数对,并跟踪最大的回文数,因此代码得到了预期的结果。我们使用了嵌套循环和一个辅助函数来检查该数是否是回文数。

更新于:2023年8月14日

234 次浏览

开启您的职业生涯

完成课程后获得认证

开始
广告