मान लीजिए हमारे पास एक संख्या N है, हमें N के सभी गुणनखोजने हैं और N के चार गुणनखोजने का गुणनफल वापस करना है जैसे कि: चार गुणनखोजने का योग N के समान है। चार गुणनखोजने का गुणनफल अधिकतम है। उत्पाद को अधिकतम करने के लिए सभी चार गुणनखोजने एक-दूसरे के बराबर हो सकते हैं।
तो, यदि इनपुट N = 60 की तरह है, तो आउटपुट होगा: सभी गुणनखोजने हैं -> 1 2 3 4 5 6 10 12 15 20 30 60 और उत्पाद 50625 है, क्योंकि 15 को चार बार चुना गया है ताकि उत्पाद सबसे बड़ा हो।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
factors := एक नई सूची
i के लिए 1 से (n का वर्गमूल का पूर्णांक) + 1 की सीमा में, करें
यदि n mod i, 0 के समान है, तो
factors के अंत में i डालें
factors के अंत में (n / i) का पूर्णांक भाग डालें
सूची factors को क्रमबद्ध करें
factors प्रदर्शित करें
final_prod := 1, flag := 1
i के लिए 0 से factors के आकार की सीमा में, करें
j के लिए i से factors के आकार की सीमा में, करें
k के लिए j से factors के आकार की सीमा में, करें
y := n - factors[i] - factors[j] - factors[k]
यदि y <= 0, तो
लूप से बाहर निकलें
यदि n mod y, 0 के समान है, तो
flag := 0
final_prod := factors[i] * factors[j] * factors[k] * y, final_prod का अधिकतम
यदि flag, 0 के समान है, तो
final_prod प्रदर्शित करें
अन्यथा,
"Not possible" प्रदर्शित करें
उदाहरण
बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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