কম্পিউটার টিউটোরিয়াল

পাইথনে একটি সংখ্যা ডাইহেড্রাল প্রাইম (Dihedral Prime) কিনা যাচাই করা

একটি সংখ্যা n ডাইহেড্রাল প্রাইম হলে সেটি নিজে প্রাইম হলো এবং ৭-সেগমেন্ট ডিসপ্লে-এ সাধারণ ও উল্টা অবস্থায় দেখালে একই বা অন্য প্রাইম সংখ্যা দেখায়।

উদাহরণ

ইনপুট: n = 1181

আউটপুট: True

ব্যাখ্যা: ১১৮১ প্রাইম, এর উল্টা ১৮১১ ও প্রাইম, এবং ৭-সেগমেন্টে উল্টা করলে ১১৮১ থেকে ১১৮১ বা অন্য প্রাইম তৈরি হয়।

সমাধানের ধাপসমূহ

  1. up_side_down(n) ফাংশন: প্রতিটি অঙ্কের জন্য ২ কে ৫ এবং ৫ কে ২ বদলিয়ে সংখ্যা তৈরি করে।
  2. প্রাইম সিভ (Sieve) দিয়ে ১০^৫ পর্যন্ত প্রাইম সংখ্যা চিহ্নিত করুন।
  3. যদি n, up_side_down(n), reverse(n), reverse(up_side_down(n)) যেকোনোটি প্রাইম না হয়, তবে False।
  4. অপরিচিত অঙ্ক (৩, ৪, ৬, ৭, ৯) থাকলে False।
  5. অন্যথায় 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
  1. পাইথনে প্রাইম নম্বর চেক করা (Prime or Not)

  2. প্রাইম নম্বর চেক করার পাইথন প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: কোনো সংখ্যা প্রাইম কিনা তা যাচাই করা

  4. পাইথনে একটি সংখ্যা প্রাইম (Prime) কিনা তা কীভাবে যাচাই করবেন?