ধরুন আমাদের একটি সংখ্যা N আছে, আমাদের N-এর সমস্ত গুণনীয়ক খুঁজে বের করতে হবে এবং N-এর চারটি গুণনীয়কের গুণফল ফেরত দিতে হবে যেমন:চারটি গুণনীয়কের যোগফল N-এর সমান। চারটি গুণনীয়কের গুণফল সর্বাধিক। পণ্যটিকে সর্বাধিক করার জন্য চারটি কারণ একে অপরের সমান হতে পারে।
সুতরাং, যদি ইনপুটটি N =60 এর মত হয়, তাহলে আউটপুট হবে সমস্ত কারণগুলি হল -> 1 2 3 4 5 6 10 12 15 20 30 60 এবং পণ্য হল 50625, যেহেতু আমরা 15 কে পণ্য তৈরি করতে চারবার নির্বাচিত করেছি। বৃহত্তম।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ফ্যাক্টর :=একটি নতুন তালিকা
-
1 থেকে পূর্ণসংখ্যা (n-এর বর্গমূল) + 1-এর মধ্যে i এর জন্য, do
-
যদি n mod i 0 এর মত হয়, তাহলে
-
গুণনীয়কের শেষে i সন্নিবেশ করান
-
ফ্যাক্টরের শেষে (n / i) এর পূর্ণসংখ্যা সন্নিবেশ করুন
-
-
-
তালিকার উপাদানগুলি সাজান
-
ডিসপ্লে ফ্যাক্টর
-
final_prod :=1, পতাকা :=1
-
আমি 0 থেকে ফ্যাক্টরের আকারের রেঞ্জের জন্য, কর
-
j রেঞ্জ i থেকে ফ্যাক্টরের আকারের জন্য, করুন
-
k এর জন্য j থেকে ফ্যাক্টরের আকার পর্যন্ত, করুন
-
y :=n - ফ্যাক্টর[i] - ফ্যাক্টর[j] - ফ্যাক্টর[k]
-
যদি y <=0, তাহলে
-
লুপ থেকে বেরিয়ে আসুন
-
-
যদি n mod y 0 এর মত হয়, তাহলে
-
পতাকা :=0
-
-
-
-
-
final_prod :=সর্বাধিক ফ্যাক্টর[i] * ফ্যাক্টর[j] * ফ্যাক্টর[k] * y, final_prod
-
যদি পতাকা 0 এর মত হয়, তাহলে
-
চূড়ান্ত_পণ্য প্রদর্শন করুন
-
-
অন্যথায়,
-
প্রদর্শন করুন "সম্ভব নয়"
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from math import * def get_factors(n) : factors = [] for i in range(1, int(sqrt(n)) + 1) : if n % i == 0 : factors.append(i) factors.append(n // i) factors.sort() print("Factors are ", factors) final_prod = 1 flag = 1 for i in range(0, len(factors)) : for j in range(i, len(factors)) : for k in range(j, len(factors)) : y = n - factors[i] - factors[j] - factors[k] if y <= 0 : break if n % y == 0 : flag = 0 final_prod = max(factors[i] * factors[j] * factors[k] * y , final_prod) if flag == 0 : print("Product is", final_prod) else : print("Not possible") n = 60 get_factors(n)
ইনপুট
60
আউটপুট
Factors are [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] Product is 50625