Javascript 使用mercende素数生成器获得错误答案

Javascript 使用mercende素数生成器获得错误答案,javascript,primes,Javascript,Primes,全部!最近,我一直在尝试使用lucas-lehmer测试方法构建mercende素数生成器。该代码适用于前4个数字,然后对其余数字无效。有什么建议吗?谢谢 var totalPrimes = Math.floor(prompt("What would you like the upper limit of our search for primes to be?")); for (var i = 2; i < to

全部!最近,我一直在尝试使用lucas-lehmer测试方法构建mercende素数生成器。该代码适用于前4个数字,然后对其余数字无效。有什么建议吗?谢谢

var totalPrimes = Math.floor(prompt("What would you like the upper limit of 
                                     our search for primes to be?"));
for (var i = 2; i < totalPrimes; i++) {
    var lucasNum = 4;
    var curNumber = (Math.pow(2, (i+1))-1);
    for (var x = 0; i-1 > x; x++) {
        if (lucasNum / curNumber > 1) {
            lucasNum = (Math.pow(lucasNum, 2)-2);
        } else {
            lucasNum = (Math.pow(lucasNum, 2)-2);
        }
    }
    if (lucasNum % curNumber === 0) {
        console.log("The number " + curNumber + " is prime");
    } else {
        console.log("The number " + curNumber + " is not prime");
    }
}
var totalPrimes=Math.floor(提示(“您希望的上限是多少?”
我们对素数的探索是?);
对于(var i=2;ix;x++){
如果(lucasNum/curNumber>1){
lucasNum=(Math.pow(lucasNum,2)-2);
}否则{
lucasNum=(Math.pow(lucasNum,2)-2);
}
}
if(lucasNum%curNumber==0){
log(“数字“+curNumber+”是素数”);
}否则{
log(“数字“+curNumber+”不是素数”);
}
}
Javascript数字的尾数(或有效位)为53位宽。因此,可以全精度存储的最大整数是:

2^53 - 1 = 9007199254740991 = Number.MAX_SAFE_INTEGER
(您可能需要阅读以了解更多详细信息。)

你的算法很可能很快达到这个极限。精度爆炸发生在此语句中:

lucasNum = (Math.pow(lucasNum, 2)-2);
包含在循环中。

Javascript数字的尾数(或有效位)为53位宽。因此,可以全精度存储的最大整数是:

2^53 - 1 = 9007199254740991 = Number.MAX_SAFE_INTEGER
(您可能需要阅读以了解更多详细信息。)

你的算法很可能很快达到这个极限。精度爆炸发生在此语句中:

lucasNum = (Math.pow(lucasNum, 2)-2);

包含在循环中。

您试图实现什么代码?我还没有找到一个Lucas-Lehmer算法来反映这个算法。我试着编写自己的代码,作为一个开始尝试的问题。谢谢首先创建一个经过验证的工作算法。这不是一个数学网站。你试图实现什么代码?我还没有找到一个Lucas-Lehmer算法来反映这个算法。我试着编写自己的代码,作为一个开始尝试的问题。谢谢首先创建一个经过验证的工作算法。这不是一个数学网站。谢谢!非常有帮助!非常感谢。非常有帮助!