Javascript 使用mercende素数生成器获得错误答案
全部!最近,我一直在尝试使用lucas-lehmer测试方法构建mercende素数生成器。该代码适用于前4个数字,然后对其余数字无效。有什么建议吗?谢谢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
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算法来反映这个算法。我试着编写自己的代码,作为一个开始尝试的问题。谢谢首先创建一个经过验证的工作算法。这不是一个数学网站。谢谢!非常有帮助!非常感谢。非常有帮助!