लागू करने में समस्याएं मैं मेर्सन संख्याओं (https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test) के लिए लुकास-लेमर परीक्षण (एलएलटी) प्रारंभिक परीक्षण को लागू करने का प्रयास करता हूं। यह बहुपद होना चाहिए और इसलिए तेज़ होना चाहिए।लुकास-लेमर प्राथमिकता परीक्षण
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;}
यहाँ एल्गोरिथ्म का उपयोग करने के प्रयास के ऊपर लागू किया गया है: यहाँ मेरी कोड है https://oobarbazanoo.github.io/findPrimeNumberWithSpecifiedQuantumOfDigits/
जब मैं जो कम से कम 7 सब कुछ ठीक है है, लेकिन जब मैं के लिए पूछने की कोशिश अंकों की संख्या की कोशिश कम से कम 7 अंकों के साथ प्राइम नंबर प्रोग्राम सिर्फ ठोकर खाता है और जवाब नहीं देता है।
कृपया मेरी मदद करें। मेरे एल्गोरिदम कार्यान्वयन में क्या गलत है या मेरे प्रोग्राम के साथ क्या गलत है?
मुझे प्राइम नंबर, क्वांटम अंक इत्यादि दिखाई देते हैं। मैं – mehulmpt
AFAIK को ऊपर उठाता हूं, जावास्क्रिप्ट '-2% 5' से '-2' का मूल्यांकन करेगा। अधिकांश एल्गोरिदम में, इसे '3' का मूल्यांकन करना चाहिए (हालांकि गणितीय दोनों सही हैं)। आप इसे ठीक करने के लिए 'एस = (एस * एस - 2 + एम)% एम' करना चाह सकते हैं। मुझे नहीं पता कि यह एकमात्र (संभावित) मुद्दा है या नहीं। – IVlad