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

পাইথনে একটি সংখ্যার বেটার ডিভাইজর বের করার প্রোগ্রাম

ধরুন আমাদের একটি সংখ্যা n আছে। আমাদের n-এর ডিভাইজরগুলো থেকে কোনটি "বেটার" সেটা বের করতে হবে এই শর্ত অনুযায়ী: দুটি সংখ্যা p এবং q আছে, যেটির ডিজিটের যোগফল বেশি সেটিই "বেটার"। যদি ডিজিটের যোগফল একই হয়, তবে ছোট সংখ্যাটিই "বেটার"।

উদাহরণস্বরূপ, যদি ইনপুট n = 180 হয়, তবে আউটপুট হবে 9 কারণ ডিভাইজরগুলো হলো [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]। যাদের ডিজিট সম সবচেয়ে বেশি সেগুলো হলো [9, 18, 36, 45, 90, 180], কিন্তু তাদের মধ্যে 9 বেটার কারণ এর মান সবচেয়ে ছোট।

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

  • div := 1, md := 1
  • for i in range 2 to n:
    • k := i
    • যদি n % i > 0, তবে নেক্সট ইটারেশন
    • s := 0
    • while k > 0:
      • s := s + k % 10
      • k := k // 10
    • যদি s > md, তবে md := s এবং div := i
  • div রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:

def solve(n):
    div = 1
    md = 1
    for i in range(2, n + 1):
        k = i
        if n % i > 0:
            continue
        s = 0
        while k > 0:
            s += k % 10
            k //= 10
        if s > md:
            md = s
            div = i
    return div

n = 180
print(solve(n))

ইনপুট

180

আউটপুট

9
  1. পাইথনে BST-এ নির্দিষ্ট রেঞ্জে থাকা নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  3. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার পাইথন প্রোগ্রাম

  4. পাইথনে লিস্ট থেকে সর্বোচ্চ সংখ্যা বের করা