Tôi cố gắng thực hiện kiểm tra nguyên thủy của bài kiểm tra Lucas – Lehmer (LLT) cho các số Mersenne (https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test). Nó nên được đa thức và do đó nhanh chóng. Đây là mã của tôi:Các vấn đề khi thực hiện kiểm tra nguyên thủy Lucas – Lehmer
function countPrimeNumberWithDigits(numberOfDigits)
{
if(numberOfDigits < 1)
{return "Please give a valid input!";}
var shouldBeMoreThanThis = Math.pow(10, numberOfDigits-1), n = 3, M = countMWithIndex(n);
while(M < shouldBeMoreThanThis)
{
n += 2;
M = countMWithIndex(n);
}
console.log(n);
while(true)
{
var S = 4, k = 1;
M = countMWithIndex(n);
while(k != n - 1)
{
S = (S*S - 2)%M;
k +=1;
}
if(S!=0)
{n+=2;}
else
{break;}
}
return "Prime number: " + countMWithIndex(n);
}
function countMWithIndex(n)
{return Math.pow(2, n) - 1;}
đây là cố gắng sử dụng các thuật toán thực hiện trên: https://oobarbazanoo.github.io/findPrimeNumberWithSpecifiedQuantumOfDigits/
Khi tôi cố gắng số chữ số đó là dưới 7 mọi thứ đều ổn, nhưng khi tôi cố gắng yêu cầu số nguyên tố có ít nhất 7 chữ số chương trình chỉ bị lỗi và không đưa ra câu trả lời.
Xin hãy giúp tôi. Điều gì là sai với việc thực hiện thuật toán của tôi hoặc những gì là sai với chính chương trình của tôi?
Tôi thấy số nguyên tố, số lượng tử, v.v. Tôi upvote – mehulmpt
AFAIK, javascript sẽ đánh giá '-2% 5' thành' -2'. Trong hầu hết các thuật toán, nó sẽ đánh giá thành '3' (mặc dù toán học đều đúng). Bạn có thể muốn làm 'S = (S * S - 2 + M)% M' để sửa lỗi này. Tôi không biết nếu đây là vấn đề duy nhất (tiềm năng). – IVlad