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