ধরুন আমাদের একটি সংখ্যা 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