কম্পিউটার

সর্বাধিক গুণফল সহ N-এর চারটি গুণনীয়ক নির্ণয় করুন এবং পাইথনে N - সেট-2 এর সমষ্টি নির্ণয় করুন


ধরুন আমাদের একটি সংখ্যা N আছে; আমাদেরকে N-এর গুণনীয়ক খুঁজে বের করতে হবে এবং শুধুমাত্র N-এর চারটি গুণনীয়কের গুণফল দিতে হবে যেমন −

  • চারটি ফ্যাক্টরের যোগফল N.

    এর সমান
  • চারটি কারণের গুণফল সর্বাধিক।

পণ্যটিকে সর্বাধিক করার জন্য চারটি কারণ একে অপরের সমান হতে পারে।

সুতরাং, যদি ইনপুটটি N =60 এর মত হয়, তাহলে আউটপুট হবে 50625 কারণ সমস্ত ফ্যাক্টর → 1 2 3 4 5 6 10 12 15 20 30 60 এবং তাদের পণ্য হল 50625, যেহেতু আমরা 15 কে চারবার নির্বাচিত করেছি। পণ্যকে সবচেয়ে বড় করুন।

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

  • my_map :=একটি নতুন মানচিত্র

  • v :=একটি নতুন তালিকা, v1 :=একটি নতুন তালিকা

  • i এর জন্য রেঞ্জ 1 থেকে (n) + 1 এর বর্গমূলের সিলিং, do

    • যদি n mod i 0 এর মত হয়, তাহলে

      • v

        এর শেষে i ঢোকান
      • যদি i (n / i) এর পূর্ণসংখ্যা অংশের সমান না হয় এবং i 1 এর সমান না হয়, তাহলে

        • v

          এর শেষে (n / i) এর পূর্ণসংখ্যা অংশ সন্নিবেশ করান
  • s :=v

    এর আকার
  • সর্বোচ্চ :=-1

  • map1 :=আকারের একটি অ্যারে (n + 5) এটি 0

    দিয়ে পূরণ করুন
  • 0 থেকে s রেঞ্জের জন্য, করুন

    • i থেকে s রেঞ্জে j এর জন্য, do

      • যদি v[i] + v[j]

        • v1

          -এর শেষে v[i] + v[j] ঢোকান
        • মানচিত্র1[v[i] + v[j]] :=[v[i], v[j]]

        • my_map[v[i] + v[j]] :=1

  • s :=v1 এর আকার

  • 0 থেকে s রেঞ্জের জন্য, করুন

    • উপাদান :=n - (v1[i])

    • যদি my_map এ উপাদান থাকে, তাহলে

      • a :=মানচিত্র1[v1[i], 0]

      • b :=মানচিত্র1[v1[i], 1]

      • c :=মানচিত্র1[n - v1[i], 0]

      • d :=মানচিত্র1[n - v1[i], 1]

      • সর্বোচ্চ :=সর্বোচ্চ a * b * c * d, সর্বোচ্চ

  • যদি সর্বোচ্চ -1 এর সমান হয়, তাহলে

    • প্রদর্শন করুন "সম্ভব নয়"

  • অন্যথায়,

    • প্রদর্শন সর্বোচ্চ

উদাহরণ

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

from math import sqrt, ceil, floor
def get_product(n):
   my_map = dict()
   v = []
   v1 = []
   for i in range(1,ceil(sqrt(n)) + 1):
   if (n % i == 0):
      v.append(i)
      if (i != (n // i) and i != 1):
         v.append(n // i)
   s = len(v)
   maximum = -1
   map1 = [0]*(n + 5)
   for i in range(s):
      for j in range(i, s):
         if (v[i] + v[j] < n):
            v1.append(v[i] + v[j])
            map1[v[i] + v[j]] =[v[i], v[j]]
            my_map[v[i] + v[j]] = 1
   s = len(v1)
   for i in range(s):
      element = n - (v1[i])
      if (element in my_map):
         a = map1[v1[i]][0]
         b = map1[v1[i]][1]
         c = map1[n - v1[i]][0]
         d = map1[n - v1[i]][1]
         maximum = max(a * b * c * d, maximum)
   if (maximum == -1):
      print("Not Possible")
   else :
      print("Maximum product", maximum)
n = 60
get_product(n)

ইনপুট

60

আউটপুট

Maximum product 50625

  1. পাইথনে সর্বাধিক Bitwise AND এবং Bitwise OR সহ পরবর্তীগুলি খুঁজুন

  2. পাইথনে সমান পণ্য সহ অ্যারেটিকে দুটি সাবয়ারেতে ভাগ করে এমন একটি উপাদান খুঁজুন

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

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