在Python中找到N的四个乘积,其最大积和总和等于N-Set-2

假设我们有一个数字N;我们必须找到N的因子,并且仅返回N的四个因子的乘积,使得-

  • 这四个因子的总和与N相同。

  • 这四个因素的乘积最大。

这四个因素可以彼此相等,以使乘积最大化。

因此,如果输入类似于N = 60,则输出将为50625,因为所有因子均为→1 2 3 4 5 6 10 12 15 20 30 60并且它们的乘积为50625,因为我们15被选择了四次以使产品最大。

为了解决这个问题,我们将遵循以下步骤-

  • my_map:=新映射

  • v:=一个新列表,v1:=一个新列表

  • 对于范围1到(n)+ 1的平方根上限的i

    • 在v的末尾插入i

    • 如果i与(n / i)的整数部分不相同并且i与1不相同,则

    • 在v的末尾插入(n / i)的整数部分

    • 如果n mod i等于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
      猜你喜欢