在Python程序中找到具有最大乘积和等于N的四个N因子-Set-2
假设我们有一个数N,我们必须找到N的所有因子并返回N的四个因子的乘积,使得:四个因子的总和与N相同。四个因子的乘积最大。这四个因素可以彼此相等,以使乘积最大化。
因此,如果输入为N = 60,则输出为:所有因子为-> 1 2 3 4 5 6 10 12 15 20 30 60且乘积为50625,因为我们已经四次选择15作为乘积最大的。
为了解决这个问题,我们将遵循以下步骤-
因素:=一个新列表
对于范围1到(n的平方根)+ 1的整数的i
在因子末插入i
在因子末插入(n / i)整数
如果n mod i等于0,则
排序列表因素
显示因素
final_prod:= 1,标志:= 1
对于范围在0到因子大小之间的i,
对于范围j内的k到因子大小,做
标志:= 0
从循环中出来
y:= n-因素[i]-因素[j]-因素[k]
如果y <= 0,则
如果n mod y与0相同,则
对于范围i中的j到因子大小,
final_prod:=因子[i] *因子[j] *因子[k] * y的最大值,final_prod
如果标志等于0,则
显示final_prod
除此以外,
显示“不可能”
示例
让我们看下面的实现以更好地理解-
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
以上是 在Python程序中找到具有最大乘积和等于N的四个N因子-Set-2 的全部内容, 来源链接: utcz.com/z/360474.html