Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで最大積と合計がN-Set-2に等しいNの4つの因子を見つけます


番号Nがあるとします。 Nの因数を見つけて、次のようなNの4つの因数の積のみを返す必要があります-

  • 4つの要素の合計はNと同じです。

  • 4つの要素の積が最大になります。

製品を最大化するために、4つの要素すべてを互いに等しくすることができます。

したがって、入力がN =60のような場合、すべての要素が→1 2 3 4 5 6 10 12 15 20 30 60であるため、出力は50625になり、15が4回選択されているため、それらの積は50625になります。製品を最大にする。

これを解決するには、次の手順に従います-

  • my_map:=新しいマップ

  • v:=新しいリスト、v1:=新しいリスト

  • 範囲1のiから(n)+ 1の平方根の上限まで、実行

    • n mod iが0と同じ場合、

      • vの最後にiを挿入します

      • iが(n / i)の整数部分と同じでなく、iが1と同じでない場合、

        • vの最後に(n / i)の整数部分を挿入します

  • s:=vのサイズ

  • 最大:=-1

  • map1:=サイズ(n + 5)の配列これを0で埋める

  • 0からsの範囲のiの場合、実行

    • iからsの範囲のjについては、次のようにします

      • v [i] + v [j]

        • v1の最後にv[i]+v[j]を挿入します

        • map1 [v [i] + v [j]]:=[v [i]、v [j]]

        • my_map [v [i] + v [j]]:=1

  • s:=v1のサイズ

  • 0からsの範囲のiの場合、実行

    • 要素:=n-(v1 [i])

    • 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:=a * b * c * dの最大値、最大値

  • 最大値が-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

  1. Pythonプログラムで数の偶数因子の合計を見つける

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、数値のすべての偶数因子の合計を表示する必要があります。 アプローチ 数値が奇数かどうかを確認し、偶数の因子がないため、0を返します。 数が偶数の場合、計算を実行します。 20を除く他のすべての項は、偶数の因数の合計を生成するために乗算されます。 偶数因子のすべての奇数を削除するために、1である20を無視します。このステップの後、偶数因子のみを取得しました。 2は私たちが利用できる唯一の素数であることに注意してください。 次に、以下の実装を見てみましょう- 例 # math

  2. 数の奇数因子の合計を見つけるためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の奇数因子の合計を見つけることです。 ここでは、最初にすべての偶数の要因を排除する必要があります。 すべての偶数因子を削除するために、nを2で割り切れるまで繰り返し除算します。このステップの後、数の奇数因子のみを取得します。 以下は実装です- 例 import math def sumofoddFactors( n ):    #prime factors    res = 1    # ignore e