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

Python-এ n-এর যেকোনো প্রপার ডিভাইজার কন royaয় একটি সম পূর্ণবর্গ সংখ্যা হয় সেই প্রোবাবিলিটি বের করার প্রোগ্রাম


মান লেট n একটি সংখ্যা, আমাদের বের করতে হবে যে n-এর যেকোনো প্রপার ডিভাইজার একটি সম পূর্ণবর্গ সংখ্যা হয় সেই প্রোবাবিলিটি।

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

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

  • যদি n mod 4 ০-এর সমান না হয়, তবে
    • 0 রিটার্ন করুন
  • অন্যথায়,
    • nc := n, ptr := 2
    • l := একটি নতুন লিস্ট
    • যখন ptr <= square root of nc, করুন
      • a := 0
      • যখন nc mod ptr ০-এর সমান, করুন
        • a := a + 1
        • nc := floor of (nc / ptr)
      • যদি a > 0, তবে
        • a কে লিস্ট l-এ অ্যাপেন্ড করুন
      • ptr := ptr + 1
    • যদি nc > 1, তবে ১ লিস্ট l-এ অ্যাপেন্ড করুন
    • k := l[0]
    • d := k + 1
    • no := floor of (k / 2)
    • l[১ থেকে শেষ] ইনডেক্সের প্রতিটি i-এর জন্য, করুন
      • d := d *(i + 1)
      • no := no * floor of (i / 2) + 1
    • d := d - 1
    • যদি n একটি পূর্ণবর্গ হয়, তবে
      • no := no - 1
    • g := d এবং no-এর gcd
    • d := floor of d / g
    • no := floor of no / g
    • যদি no ০-এর সমান হয়, তবে
      • 0 রিটার্ন করুন
    • অন্যথায়,
      • ফ্র্যাকশন no/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. পাইথনে একটি সংখ্যার জোড় গুণনীয়গুলোর যোগফল বের করার প্রোগ্রাম