मान लीजिए हमारे पास एक अभाज्य संख्या n है। हमें यह जांचना है कि क्या हम n को x + y के रूप में व्यक्त कर सकते हैं जहां x और y भी दो अभाज्य संख्याएं हैं।
उदाहरण के लिए, यदि इनपुट n = 19 है, तो आउटपुट True होगा क्योंकि हम इसे 19 = 17 + 2 के रूप में व्यक्त कर सकते हैं।
समाधान दृष्टिकोण
2 को छोड़कर सभी अभाज्य संख्याएं विषम होती हैं। दो विषम संख्याओं का योग सम होता है। इसलिए एक विषम अभाज्य संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त करने का एकमात्र तरीका है: एक 2 (एकमात्र सम अभाज्य) हो और दूसरी n-2 हो। इसलिए हमें केवल यह जांचना है कि n-2 अभाज्य है या नहीं।
एल्गोरिदम चरण:
isPrime(number)फ़ंक्शन परिभाषित करें:- यदि
number <= 1: False - यदि
number == 2: True - यदि सम: False
- 3 से
sqrt(number)तक 2 की वृद्धि से जांचें - यदि
isPrime(n)औरisPrime(n-2)दोनों True हैं, तो True लौटाएं - अन्यथा False लौटाएं
पायथन कार्यान्वयन
from math import sqrt
def isPrime(number):
if number <= 1:
return False
if number == 2:
return True
if number % 2 == 0:
return False
for i in range(3, int(sqrt(number)) + 1, 2):
if number % i == 0:
return False
return True
def solve(number):
if isPrime(number) and isPrime(number - 2):
return True
else:
return False
n = 19
print(solve(n)) # True
इनपुट
19
आउटपुट
True
व्याख्या:
n = 19 (अभाज्य)
n - 2 = 17 (अभाज्य)
19 = 17 + 2 ✓
नोट:
यह गोल्डबैक की कमजोर परिकल्पना से संबंधित है। 2 से बड़ी प्रत्येक विषम संख्या तीन अभाज्य संख्याओं के योग के रूप में लिखी जा सकती है। यहां हम विशेष मामला देख रहे हैं जहां एक अभाज्य संख्या स्वयं दो अभाज्य संख्याओं का योग है।