paint-brush
जावास्क्रिप्ट चुनौतियां: प्राइम नंबर और सोफी जर्मेन प्राइम्सद्वारा@blablablawebdevelopment
2,105 रीडिंग
2,105 रीडिंग

जावास्क्रिप्ट चुनौतियां: प्राइम नंबर और सोफी जर्मेन प्राइम्स

द्वारा Yana3m2022/12/22
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

एक अभाज्य संख्या 1 से अधिक एक पूर्ण संख्या है जिसे स्वयं और 1 के अलावा किसी अन्य पूर्ण संख्या से विभाजित नहीं किया जा सकता है। संख्या 5 एक अभाज्य संख्या है क्योंकि इसके केवल कारक 1 और 5 हैं। 1 से कम संख्याएँ अभाज्य संख्या नहीं हैं .
featured image - जावास्क्रिप्ट चुनौतियां: प्राइम नंबर और सोफी जर्मेन प्राइम्स
Yana HackerNoon profile picture

प्रमुख संख्या

प्राइम नंबर क्या होते हैं?


एक अभाज्य संख्या 1 से बड़ी एक पूर्ण संख्या होती है जिसे स्वयं और 1 (जैसे 2, 3, 5, 7, 11) के अलावा किसी अन्य पूर्ण संख्या से विभाजित नहीं किया जा सकता है।


संख्या 5 एक अभाज्य संख्या है क्योंकि इसके केवल कारक 1 और 5 हैं।


संख्या 4 एक अभाज्य संख्या नहीं है क्योंकि इसके कारक 1, 2 और 4 हैं।


चलिए एक ऐसा फंक्शन बनाते हैं जो अगर स्ट्रिंग एक अभाज्य संख्या है तो सही लौटेगा और अगर कोई संख्या अभाज्य संख्या नहीं है तो गलत लौटेगा।


 isPrime(3); // true isPrime(9); // false


चलिए एक फंक्शन बनाते हैं

 function isPrime(num) { }


एक अभाज्य संख्या 1 से बड़ी संख्या होती है। इसलिए, 1 से छोटी संख्या एक अभाज्य संख्या नहीं होती है।

 function isPrime(num) { if (num <= 1) return false; }
 isPrime(-5); // false


मॉडुलो ऑपरेटर का उपयोग विभाजन के बाद शेष प्राप्त करने के लिए किया जाता है। हम जाँच करने जा रहे हैं कि क्या संख्या को बिना शेष छोड़े अन्य गुणनखंडों (1 और स्वयं को छोड़कर) में विभाजित किया जा सकता है।

 function isPrime(num) { if (num <= 1) return false; for (let i=2; i<num; i++) { if (num%i !== 0) return false; } return true; }


याद रखें कि 2 एक अभाज्य संख्या है।

 function isPrime(num) { if (num <= 1) return false; if (num === 2) return true; for (let i=2; i<num; i++) { if (num%i === 0) return false; } return true; }
 isPrime(5); //true isPrime(9); //false


क्या होगा यदि हमारे पास बड़ी संख्या है?

 isPrime(56669900033);


हमारा कार्य धीमा चलेगा। हम वर्गमूल का उपयोग करके प्रक्रिया को छोटा कर सकते हैं। उदाहरण के लिए,

संख्या 121। 121 का वर्गमूल 11 है। इसका अर्थ है कि 121 एक अभाज्य संख्या नहीं है , क्योंकि एक अभाज्य संख्या केवल स्वयं और 1 से समान रूप से विभाजित की जा सकती है। इसलिए, 2 से 121 तक पुनरावृति करने के बजाय, हम केवल 121 के वर्गमूल, 11 तक पुनरावृति कर सकते हैं।


Math.sqrt() किसी संख्या का वर्गमूल ज्ञात करें।

 function isPrime(num) { if (num <= 1) return false; if (num === 2) return true; let numSqrt = Math.sqrt(num); for (let i=2; i<=numSqrt; i++) { if (num%i === 0) return false; } return true; }
 isPrime(5); //true isPrime(121); //false

सोफी जर्मेन प्राइम्स

यदि p और 2p+1 दोनों अभाज्य हैं, तो p सोफी जर्मेन अभाज्य है। उदाहरण के लिए, 2, 3, 5, 11, 23, 29, 41, 53, 83, 89…


5 एक अभाज्य संख्या है और 5*2+1=11

11 भी एक अभाज्य संख्या है। अतः, 5 और 11 दोनों सोफी जर्मेन अभाज्य संख्याएँ हैं।


चलिए एक ऐसा फंक्शन बनाते हैं जो 2 से n तक सोफी जर्मेन अभाज्य संख्याओं की एक सरणी लौटाएगा।

हम अपने isPrime () फ़ंक्शन का उपयोग पिछले उदाहरण से यह जाँचने के लिए करेंगे कि संख्या अभाज्य है या नहीं।

 function getGermainPrimes(n) { let result = []; // an array of Sophie Germain prime numbers (our result) for (let i = 0; i <= n; i++) { if (isPrime(i) && isPrime(i*2 + 1)) { //if both i and 2i+1 are prime result.push(i); } } return result; }
 getGermainPrimes(100); // [2, 3, 5, 11, 23, 29, 41, 53, 83, 89]

मुझे आशा है कि आपको यह मददगार लगा होगा!