- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find four factors of N with maximum product and sum equal to N - Set-2 in Python Program
Suppose we have a number N, we have to find all factors of N and return the product of four factors of N such that: The sum of the four factors is same as N. The product of the four factors is maximum. All four factors can be equal to each other to maximize the product.
So, if the input is like N = 60, then the output will be All the factors are -> 1 2 3 4 5 6 10 12 15 20 30 60 and product is 50625, as we 15 has been selected four times to make product largest.
To solve this, we will follow these steps −
factors := a new list
for i in range 1 to integer of (square root of n) + 1, do
if n mod i is same as 0, then
insert i at the end of factors
insert integer of (n / i) at the end of factors
sort the list factors
display factors
final_prod := 1, flag := 1
for i in range 0 to size of factors, do
for j in range i to size of factors, do
for k in range j to size of factors, do
y := n - factors[i] - factors[j] - factors[k]
if y <= 0, then
come out from the loop
if n mod y is same as 0, then
flag := 0
final_prod := maximum of factors[i] * factors[j] * factors[k] * y, final_prod
if flag is same as 0, then
display final_prod
otherwise,
display "Not possible"
Example
Let us see the following implementation to get better understanding −
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)
Input
60
Output
Factors are [1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] Product is 50625