gpt4 book ai didi

javascript - 使用 Mercende 素数生成器得到错误答案

转载 作者:行者123 更新时间:2023-11-28 05:40:10 25 4
gpt4 key购买 nike

全部!最近,我一直在尝试使用 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");
}
}

最佳答案

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

2^53 - 1 = 9007199254740991 = Number.MAX_SAFE_INTEGER

(您可能需要阅读 this page 了解更多详细信息。)

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

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

它包含在循环中。

关于javascript - 使用 Mercende 素数生成器得到错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com