VBA Excel - अभाज्य संख्याएँ

VBA Excel - अभाज्य संख्याएँ

परिचय

Eratosthenes की छलनी एक एल्गोरिथ्म है जो हमें एक विशिष्ट सीमा ( n वें नंबर) तक सभी प्रमुख संख्याओं को खोजने की अनुमति देता है। इसमें सभी नंबरों के माध्यम से 2 से n तक लूपिंग शामिल है, यह जांचने के लिए कि क्या सक्रिय संख्या एक से अधिक है। यदि यह एक बहु नहीं है, तो संख्या एक अभाज्य संख्या है।
  • अधिक जानकारी एराटोस्थनीज की चलनी को abou: विकिपीडिया: //en.wikipedia.org/wiki/Sieve_of_Eratosthenes

एल्गोरिथ्म

पहले हमें NbreMax तक सभी नंबरों की सूची की आवश्यकता होगी।
  • 1 को हटा दिया जाता है।
  • 2 को हाइलाइट करें और इसके सभी मल्टीपल को खत्म करें
  • संख्या 3 के लिए ऑपरेशन दोहराएं।
  • सबसे छोटी गैर हाइलाइट की गई संख्या चुनें और फिर इसके सभी गुणकों (संख्या 5, ...) को हटा देती है।
  • जब तक आप n की जड़ के पूर्णांक भाग तक नहीं पहुंचते तब तक इस प्रक्रिया को दोहराएं।

शेष सभी संख्याएँ (n तक) अभाज्य संख्याएँ हैं!

कार्यक्रम

इस प्रकार के फ़ंक्शन को एक पूर्णांक या लंबी संख्या प्रकार को वापस करने के लिए आसानी से संशोधित किया जा सकता है ... कोड निष्पादित करने के लिए काफी धीमा है, इसलिए हम अपने आप को पहले 1500 प्रमुख संख्याओं तक सीमित कर लेंगे ...

 फंक्शन NbPremiers_Eratosthene (Rang As Long) वेरिएंट के रूप में

For एराटोस्थनीज की छलनी का उपयोग करके nth अभाज्य संख्या की जाँच करें

डिम आई अस लॉन्ग, जे अस लॉन्ग, के अस लॉन्ग, नेब्रामेक्स लॉन्ग, एस्ट_प्रेमियर (), फ्लैग कॉटेजियन

यदि रंग> = 1 और रंग <= 1500 तब

फिर से तैयार करें est_premier (रंग)

के = ०

NbreMax = 20 * रंग का प्रत्यय अन रंग <1500 है

ध्वज = सच्चा

I = 2 के लिए NbreMax

J = 2 से i के लिए

अगर j = i तो इसके लिए बाहर निकलें

अगर मैं मॉड j = 0 तो फ़्लैग = गलत: इसके लिए बाहर निकलें

आगामी

यदि ध्वज = सत्य

अगर मैं = 2 तो

est_premier (k) = 1

के = के + १

अन्य

est_premier (k) = i

के = के + १

अगर अंत

अन्य

ध्वज = सच्चा

अगर अंत

यदि k = रंग है तो बाहर निकलें

अगला मैं

NbPremiers_Eratosthene = est_premier (रंग - 1)

अन्य

NbPremiers_Eratosthene = "रंग की फसल ग्रैंड कहां ट्रॉप पेटिट (कॉम्प्रेस एंट्रे 1 एट 1500 इंक्लूसिव)।"

अगर अंत

अंत समारोह

समारोह का आह्वान

दो तरीके उपलब्ध हैं:

Nth प्राइम नंबर

 उप परीक्षण ()

'499 वाँ प्राइम नंबर पाने के लिए:

MsgBox NbPremiers_Eratosthene (499)

अंत उप

पहले 99 अभाज्य संख्याओं की सूची प्राप्त करें

 उप ListeNbPrems ()

'पहले 99 अभाज्य संख्याओं की सूची प्राप्त करें

डिम आई अस लॉन्ग, मिसग अस स्टिंग, टीबी (98)

I = 1 से 99 के लिए

Tb (i - 1) = NbPremiers_Eratosthene (i)

अगला मैं

MsgBox Tb (0) और "" और Tb (1) और "" और Tb (2) और "..." और Tb (UBound (Tb))

अंत उप

डाउनलोड लिंक

नमूना कार्यपुस्तिका यहां डाउनलोड करें: //cjoint.com/14au/DHfoihzPEV2.htm
पिछला लेख अगला लेख

शीर्ष युक्तियाँ