একটি সংখ্যা n ডাইহেড্রাল প্রাইম হলে সেটি নিজে প্রাইম হলো এবং ৭-সেগমেন্ট ডিসপ্লে-এ সাধারণ ও উল্টা অবস্থায় দেখালে একই বা অন্য প্রাইম সংখ্যা দেখায়।
উদাহরণ
ইনপুট: n = 1181
আউটপুট: True
ব্যাখ্যা: ১১৮১ প্রাইম, এর উল্টা ১৮১১ ও প্রাইম, এবং ৭-সেগমেন্টে উল্টা করলে ১১৮১ থেকে ১১৮১ বা অন্য প্রাইম তৈরি হয়।
সমাধানের ধাপসমূহ
up_side_down(n)ফাংশন: প্রতিটি অঙ্কের জন্য ২ কে ৫ এবং ৫ কে ২ বদলিয়ে সংখ্যা তৈরি করে।- প্রাইম সিভ (Sieve) দিয়ে ১০^৫ পর্যন্ত প্রাইম সংখ্যা চিহ্নিত করুন।
- যদি
n,up_side_down(n),reverse(n),reverse(up_side_down(n))যেকোনোটি প্রাইম না হয়, তবেFalse। - অপরিচিত অঙ্ক (৩, ৪, ৬, ৭, ৯) থাকলে
False। - অন্যথায়
True।
উদাহরণ কোড
prime = [True] * (10**5 + 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, 10**5 + 1):
j = 2
while i * j <= 10**5:
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)) # Output: True
ইনপুট
1181
আউটপুট
True