কম্পিউটার

n-এর যে কোনো সঠিক ভাজক পাইথনে একটি এমনকি নিখুঁত বর্গ সংখ্যা হবে এমন সম্ভাবনা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের সম্ভাব্যতা খুঁজে বের করতে হবে যে n-এর যেকোনো সঠিক ভাজক একটি এমনকি নিখুঁত বর্গ হবে।

সুতরাং, যদি ইনপুটটি n =36 এর মত হয়, তাহলে আউটপুট হবে 1/8 কারণ 36 এর আটটি সঠিক ভাজক রয়েছে, এগুলি হল {1,2,3,4,6,9,12,18} এবং তাদের মধ্যে শুধুমাত্র একটি সংখ্যা (4) নিখুঁত বর্গ এবং জোড়।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি n mod 4 0 এর মত না হয়, তাহলে
    • রিটার্ন 0
  • অন্যথায়,
    • nc :=n, ptr :=2
    • l :=একটি নতুন তালিকা
    • যখন ptr <=nc এর বর্গমূল , do
      • a :=0
      • যদিও nc mod ptr 0 এর মতো, do
        • a :=a + 1
        • nc :=(nc / ptr) এর ফ্লোর
      • যদি a> 0 হয়, তাহলে
        • তালিকায় একটি যোগ করুন l
      • ptr :=ptr + 1
    • যদি nc> 1 হয়, তাহলে তালিকায় 1 যুক্ত করুন l
    • k :=l[0]
    • d :=k + 1
    • no :=(k / 2) এর ফ্লোর
    • l[সূচী 1 থেকে শেষ পর্যন্ত] প্রতিটি i-এর জন্য, করুন
      • d :=d *(i + 1)
      • no :=no * (i / 2) + 1 এর তল
    • d :=d - 1
    • যদি n একটি নিখুঁত বর্গ হয়, তাহলে
      • না :=না - 1
    • g :=d এবং no এর gcd
    • d :=d / g এর তল
    • no :=no / g এর তল
    • যদি no 0 এর মত হয়, তাহলে
      • রিটার্ন 0
    • অন্যথায়,
      • একটি ভগ্নাংশ নম্বর/d ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from math import gcd

def solve(n):
   if n % 4 != 0:
      return 0
   else:
      nc = n
      ptr = 2
      l = []
      while ptr <= nc ** 0.5:
         a = 0
         while nc % ptr == 0:
            a += 1
            nc = nc / ptr
         if a > 0:
            l += [a]
         ptr += 1
      if nc > 1:
         l += [1]
      k = l[0]
      d = k + 1
      no = int(k / 2)
      for i in l[1:]:
         d = d * (i + 1)
         no *= int(i / 2) + 1
      d = d - 1
      if int(n ** 0.5) ** 2 == n:
         no -= 1
      g = gcd(d, no)
      d = d // g
      no = no // g
      if no == 0:
         return 0
      else:
         return str(no) + '/' + str(d)

n = 36
print(solve(n))

ইনপুট

4, 27

আউটপুট

1/8

  1. পাইথনে দীর্ঘতম চেইন তৈরি করে এমন বাক্সের সংখ্যা খুঁজে বের করার প্রোগ্রাম?

  2. পাইথনে k পর্যন্ত যোগফলের তালিকায় যেকোনো দুটি সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রামে একটি সংখ্যার জোড় গুণনীয়কের সমষ্টি খুঁজুন

  4. একটি সংখ্যার জোড় গুণকের যোগফল খুঁজে বের করার জন্য পাইথন প্রোগ্রাম