在Python中找到N的四个乘积,其最大积和总和等于N-Set-2
假设我们有一个数字N;我们必须找到N的因子,并且仅返回N的四个因子的乘积,使得-
这四个因子的总和与N相同。
这四个因素的乘积最大。
这四个因素可以彼此相等,以使乘积最大化。
因此,如果输入类似于N=60,则输出将为50625,因为所有因子均为→123456101215203060并且它们的乘积为50625,因为我们15被选择了四次以使产品最大。
为了解决这个问题,我们将遵循以下步骤-
my_map:=新映射
v:=一个新列表,v1:=一个新列表
对于范围1到(n)+1的平方根上限的i
在v的末尾插入i
如果i与(n/i)的整数部分不相同并且i与1不相同,则
在v的末尾插入(n/i)的整数部分
如果nmodi等于0,则
s:=v的大小
最大:=-1
map1:=大小(n+5)的数组,用0填充
对于0到s之间的i,执行
如果v[i]+v[j]<n,则
在v1的末尾插入v[i]+v[j]
map1[v[i]+v[j]]:=[v[i],v[j]]
my_map[v[i]+v[j]]:=1
对于范围i至s中的j,执行
s:=v1的大小
对于0到s之间的i,执行
a:=map1[v1[i],0]
b:=map1[v1[i],1]
c:=map1[n-v1[i],0]
d:=map1[n-v1[i],1]
最大:=最大a*b*c*d,最大
元素:=n-(v1[i])
如果元素在my_map中,则
如果最大值等于-1,则
显示“不可能”
除此以外,
显示最大
示例
让我们看下面的实现以更好地理解-
from math import sqrt, ceil, floor def get_product(n): my_map = dict() v = [] v1 = [] for i in range(1,ceil(sqrt(n)) + 1): if (n % i == 0): v.append(i) if (i != (n // i) and i != 1): v.append(n // i) s = len(v) maximum = -1 map1 = [0]*(n + 5) for i in range(s): for j in range(i, s): if (v[i] + v[j] < n): v1.append(v[i] + v[j]) map1[v[i] + v[j]] =[v[i], v[j]] my_map[v[i] + v[j]] = 1 s = len(v1) for i in range(s): element = n - (v1[i]) if (element in my_map): a = map1[v1[i]][0] b = map1[v1[i]][1] c = map1[n - v1[i]][0] d = map1[n - v1[i]][1] maximum = max(a * b * c * d, maximum) if (maximum == -1): print("Not Possible") else : print("Maximum product", maximum) n = 60 get_product(n)
输入值
60
输出结果
Maximum product 50625