मान लीजिए कि हमारे पास एक संख्या n है। हमें जांचना है कि n यूक्लिड संख्या है या नहीं। जैसा कि हम जानते हैं कि यूक्लिड संख्याएं पूर्णांक होती हैं जिन्हें
. के रूप में दर्शाया जा सकता हैn=Pn +1
प्रथम n अभाज्य संख्याओं का गुणनफल कहाँ है।
इसलिए, यदि इनपुट n =211 की तरह है, तो आउटपुट ट्रू होगा जिसे
के रूप में दर्शाया जा सकता है211=(2×3×5×7)+1
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अधिकतम:=10000
- प्राइम्स:=एक नई सूची
- एक फ़ंक्शन को परिभाषित करें generate_all_primes() । इसमें लगेगा
- प्राइम:=MAX आकार की सूची और ट्रू से भरें
- x :=2
- जबकि x * x <मैक्स, करते हैं
- यदि अभाज्य[x] सत्य है, तो
- x * 2 से MAX की श्रेणी में i के लिए, प्रत्येक चरण में x द्वारा अपडेट करें, करें
- प्राइम[i] :=गलत
- x :=x + 1
- x * 2 से MAX की श्रेणी में i के लिए, प्रत्येक चरण में x द्वारा अपडेट करें, करें
- यदि अभाज्य[x] सत्य है, तो
- x के लिए 2 से MAX-1 की श्रेणी में, करें
- यदि अभाज्य[x] सत्य है, तो
- प्राइम्स के अंत में x डालें
- यदि अभाज्य[x] सत्य है, तो
- मुख्य विधि से निम्न कार्य करें:
- generate_all_primes()
- मूल:=1, मैं:=0
- जबकि मूल
- मूल :=mul * primes[i]
- यदि mul + 1 n के समान है, तो
- सही लौटें
- i :=i + 1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण कोड
MAX = 10000 primes = [] def generate_all_primes(): prime = [True] * MAX x = 2 while x * x < MAX : if prime[x] == True: for i in range(x * 2, MAX, x): prime[i] = False x += 1 for x in range(2, MAX): if prime[x]: primes.append(x) def solve(n): generate_all_primes() mul = 1 i = 0 while mul < n : mul = mul * primes[i] if mul + 1 == n: return True i += 1 return False n = 211 print(solve(n))
इनपुट
211
आउटपुट
True