मान लीजिए हमारे पास एक संख्या n है। हमें जांचना है कि n डाइहेड्रल अभाज्य है या नहीं। एक संख्या डाइहेड्रल अभाज्य कहलाती है जब वह संख्या स्वयं अभाज्य हो और 7-सेगमेंट डिस्प्ले पर सामान्य या उल्टा (upside-down) दिखाने पर वही संख्या या कोई अन्य अभाज्य संख्या प्रदर्शित हो।
उदाहरण के लिए, यदि इनपुट n = 1181 है, तो आउटपुट True होगा।

दूसरी छवि पहली का उल्टा रूप है और दोनों अभाज्य हैं।
हल करने का तरीका
- up_side_down() फ़ंक्शन परिभाषित करें जो n लेता है
- अंकों को उल्टा करें: 2 ↔ 5, अन्य वैध अंक (0, 1, 8) वही रहते हैं
- मुख्य विधि से:
- यदि n अभाज्य नहीं है, या up_side_down(n) अभाज्य नहीं है, या n का उल्टा अभाज्य नहीं है, या up_side_down(n) का उल्टा अभाज्य नहीं है, तो False लौटाएं
- n के प्रत्येक अंक की जांच करें: यदि कोई अंक [3, 4, 6, 7, 9] में से है, तो False लौटाएं (ये 7-सेगमेंट पर उल्टा वैध नहीं होते)
- अन्यथा True लौटाएं
उदाहरण कोड
prime = [True] * (int(1e5) + 5)
def reverse(n):
return int(str(n)[::-1])
def up_side_down(n):
temp = n
total = 0
while temp > 0:
d = temp % 10
if d == 2:
d = 5
elif d == 5:
d = 2
total = total * 10 + d
temp //= 10
return total
def get_all_prime():
prime[0] = prime[1] = False
for i in range(2, int(1e5) + 1):
j = 2
while i * j <= int(1e5):
prime[i * j] = False
j += 1
def solve(n):
get_all_prime()
if not prime[n] or not prime[up_side_down(n)] or not prime[reverse(n)] or not prime[reverse(up_side_down(n))]:
return False
temp = n
while temp > 0:
rem = temp % 10
if rem in [3, 4, 6, 7, 9]:
return False
temp //= 10
return True
n = 1181
print(solve(n))
इनपुट
1181
आउटपुट
True