javascript - 寻找最大的回文数,它是两个简单(素数)五位数的乘积。 Javascript

标签 javascript algorithm

我试图编写一个程序来返回最大的回文数,它是两个简单的五位数的乘积,并返回因子本身。

质数是只能被 1 和它本身整除的自然数 (2, 3, 5, 7, 11, ...)

回文数在两种情况下读起来都一样(例如,ABBA)。

if(isPalin(mul) && isPrime(i) && isPrime(j))

function isPrime(i){
  for (var k = 2; k <= i; k++) {
      if (i%k===0 && i!==k) {
          return false;
    }
  }
return true;
}



<!--code-->


<script>

function largestPalindrome(){

    for(var i = 99999; i>10000; i--){
        for(var j = 99999; j>10000; j--){
            var mul = j*i;
            if(isPalin(mul) && isPrime(i) && isPrime(j)){
                return i * j;


            }
        }

    }
}


function isPalin(i){
    return i.toString() == i.toString().split("").reverse().join("");
    }

function isPrime(i){
  for (var k = 2; k <= i; k++) {
      if (i%k===0 && i!==k) {
          return false;
    }
  }
return true;
}

console.log(largestPalindrome());

</script>

当我运行这个程序时,它没有在控制台中显示任何内容,我不确定为什么。

最佳答案

看这个link对于算法的时间复杂度。还有 this了解时间复杂度如何影响您的程序效率。

这部分不是很精确,但可以提供帮助。您的第一个循环运行 99999-10000 时间。这也适用于第二个循环。 isPrime 在最坏的情况下运行 (99999)。所以 if (i%k===0 && i!==k) return false; 运行 total_ops = (99999-10000)^2*(99999) 次(我们跳过你代码的其他部分)。如果您的程序是用比 java 脚本更快的 c++ 编写的,它每秒可以运行 2*(10^8) 简单 操作。您的程序运行时间约为(显然超过)total_ops/(2*10^8)(我建议计算它以进行估算...)。

PS:您可以打印您的功能以确保其进度...

关于javascript - 寻找最大的回文数,它是两个简单(素数)五位数的乘积。 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617941/

相关文章:

javascript - 在 anchor 标记前添加文本

javascript - 使用 jQuery 获取标签内的文本

javascript - Angular:使用 MockBackend 测试 HTTP,真的需要 async() 吗?

java - 库恩算法递归消除

python - 为什么我的随机主元快速排序比固定主元快速排序慢?

将路径名转换为唯一编号的算法

javascript - 如何显示特定于所选下拉选项的项目?

javascript - 按下按钮时内容未加载

c# - C# 中的谷歌身份验证器一次性密码算法

c++ - 网格系统中的寻路