Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में अभाज्य संख्या खोजने के विभिन्न तरीकों का विश्लेषण


एक अभाज्य संख्या एक पॉजिटिव इंटीजर है जो केवल 1 या स्वयं से विभाज्य होती है। किसी संख्या के अभाज्य होने या न होने का पता लगाना लंबे समय से एक दिलचस्प प्रोग्रामिंग चुनौती है। इसके अलावा अलग-अलग तरीके हैं और उनकी अलग-अलग दक्षता है। इस लेख में हम तीन ऐसे तरीकों को देखेंगे और आंकेंगे कि उनके निष्पादन के समय के संदर्भ में कौन सा अधिक कुशल है।

सभी भाजक जांचें

यह एक सीधा प्रोग्राम है जहां हम दिए गए संख्या से एक कम तक 1 से हर पूर्णांक लेते हैं और जांचते रहते हैं कि संख्या इनमें से किसी से विभाजित होती है या नहीं। यदि कोई संख्या नहीं मिलती जो इस संख्या को विभाजित कर सके तो संख्या अभाज्य है।

उदाहरण

import time # अभाज्य संख्या जांचने का फ़ंक्शन def check_prime(final_val):     if final_val <= 1:         return False     for divisor in range(2, final_val):         if final_val % divisor == 0:             return False         return True # प्रारंभ समय ट्रैक करें StartTime = time.time() # अभाज्य संख्याओं की संख्या गिनें cnt = 0 for final_val in range(1, 10001):     x = check_prime(final_val)     cnt += x print('Count of prime numbers till', final_val, 'is ', cnt) # अंत समय ट्रैक करें EndTime = time.time() print('Time Elapsed is: ', EndTime - StartTime)

आउटपुट

उपरोक्त कोड चलाने पर हमें निम्नलिखित परिणाम मिलता है -

Count of prime numbers till 10000 is 1229 Time Elapsed is: 2.3100001812

वर्गमूल(N) तक के गुणनखंड

गणितीय रूप से यह भी पाया गया है कि जिस संख्या के लिए हम जांच कर रहे हैं उसके वर्गमूल तक के गुणनखंड ढूंढना पर्याप्त है। यह दृष्टिकोण पुनरावृत्तियों की संख्या को कम करता है और इसलिए तेज होना चाहिए जिसे हम नीचे जांच सकते हैं। इस विचार को लागू करने का तर्क नीचे है।

  • हम उस संख्या का वर्गमूल ढूंढते हैं जिसकी अभाज्य मान के लिए जांच की जा रही है।

  • हम मान 2 से शुरू करके वर्गमूल मान तक प्रत्येक मान से संख्या को विभाजित करते हैं, यह जांचने के लिए कि कोई शेष बचा है या नहीं।

  • यदि उपरोक्त में किसी भी चरण में शेष शून्य बचता है, तो संख्या अभाज्य नहीं है।

उदाहरण

import math import time def is_prime(final_val):     # 1 अभाज्य संख्या नहीं है     if final_val <= 1:         return False     i = 2     while i <= math.floor(math.sqrt(final_val)):         # जांचें कि क्या कोई शेष बनता है         if final_val % i == 0:             return False         i += 1     return True # प्रारंभ समय ट्रैक करें StartTime = time.time() cnt = 0 for n in range(1, 10001):     x = is_prime(n)     cnt += x print('Count of prime numbers till', n, 'is ', cnt) # अंत समय ट्रैक करें EndTime = time.time() print('Time Elapsed is: ', EndTime - StartTime)

आउटपुट

उपरोक्त कोड चलाने पर हमें निम्नलिखित परिणाम मिलता है -

Count of prime numbers till 10000 is 1229 Time Elapsed is: 0.0529999732971

एराटोस्थनीज की छलनी

इस विधि में हम एक विशिष्ट संख्या तक अभाज्य संख्या प्राप्त करने के लिए गैर-अभाज्य या मिश्रित संख्याओं को समाप्त करते हैं। तो नीचे वे चरण हैं जिनका हम पालन करते हैं।

  • उस संख्या तक लगातार पूर्णांकों की एक सूची बनाएं जिस तक हम सभी अभाज्य संख्या ढूंढना चाहते हैं।

  • पहली संख्या यानी 2 लें और इसके सभी गुणकों की एक सूची बनाएं। इस गुणकों की सूची को मूल सूची से हटा दें लेकिन 2 को नहीं। अगली संख्या यानी 3 के लिए इसे दोहराएं और इसी तरह अगली संख्याओं के लिए। कृपया ध्यान दें कि हम केवल गुणकों को हटा रहे हैं न कि संख्या को स्वयं। इसलिए 5 या 11 कभी नहीं हटाए जाते लेकिन 10 और 22 हट जाते हैं।

  • सभी निष्कासन के बाद बची हुई सूची पूछी गई संख्या तक की अभाज्य संख्याओं की सूची है।

उदाहरण

import time def sieve_method(n): # अभाज्य संख्याओं की सूची बनाएं     prime_number_list = []     for i in range(2, n+1): # संख्या को कैप्चर करें यदि यह अभाज्य सूची में नहीं है         if i not in prime_number_list:             print(i) # संख्या को अभाज्य सूची में जोड़ें यदि यह एक गुणक है         for j in range(i*i, n+1, i):             prime_number_list.append(j) # प्रारंभ समय ट्रैक करें StartTime = time.time() cnt = 0 print(sieve_method(25)) # अंत समय ट्रैक करें EndTime = time.time() print('Time Elapsed is: ', EndTime - StartTime)

आउटपुट

उपरोक्त कोड चलाने पर हमें निम्नलिखित परिणाम मिलता है -

2 3 5 7 11 13 17 19 23 Time Elapsed is: 0.0

  1. पायथन प्रोग्राम: अभाज्य संख्या जांचें पायथन प्रोग्राम: अभाज्य संख्या जांचें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक संख्या दी गई है, हमें जांचना है कि दी गई संख्या अभाज्य संख्या है या नहीं। 1 से बड़ी दी गई धनात्मक संख्या जिसके 1 और संख्या स्वयं के अलावा कोई अन्य गुणनखंड नहीं होते, उसे अभाज्य संख्या कहा जाता है। 2, 3, 5, 7 आदि अभाज्य संख्

  1. पायथन प्रोग्राम: संख्या का सबसे बड़ा प्राइम फैक्टर ढूंढें पायथन प्रोग्राम: संख्या का सबसे बड़ा प्राइम फैक्टर ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट एक पॉजिटिव इंटीजर n दिए जाने पर। हमें संख्या का सबसे बड़ा प्राइम फैक्टर ढूंढने की आवश्यकता है। दृष्टिकोण दिए गए नंबर इनपुट को संख्या के डिवाइजर से विभाजित करके फैक्टराइज़ करें। अब अधिकतम प्राइम फैक्टर

  1. - पायथन में अभाज्य संख्या खोजने के विभिन्न तरीके

    सबसे पहले हमें यह जानने की जरूरत है कि अभाज्य संख्या क्या है। एक अभाज्य संख्या हमेशा एक धनात्मक पूर्णांक संख्या होती है और ठीक 2 पूर्णांकों (1 और संख्या स्वयं) से विभाज्य होती है, 1 अभाज्य संख्या नहीं है। अब हम अभाज्य संख्या खोजने के कुछ तरीकों पर चर्चा करेंगे। विधि 1 फॉर लूप्स का उपयोग करना उदाहरण