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回選択されているためです。最大。
これを解決するには、次の手順に従います-
-
要因:=新しいリスト
-
1から(nの平方根)+ 1の整数までの範囲のiの場合、do
-
n mod iが0と同じ場合、
-
因子の最後にiを挿入します
-
因子の最後に(n / i)の整数を挿入します
-
-
-
リスト要素を並べ替える
-
表示要素
-
final_prod:=1、フラグ:=1
-
0から因子のサイズまでの範囲のiについては、次のようにします
-
iから因子のサイズまでの範囲のjについては、次のようにします
-
jから因子のサイズまでの範囲のkについては、次のようにします
-
y:=n-ファクター[i]-ファクター[j]-ファクター[k]
-
y <=0の場合、
-
ループから出てきます
-
-
n mod yが0と同じ場合、
-
フラグ:=0
-
-
-
-
-
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を2で割り切れるまで繰り返し除算します。このステップの後、数の奇数因子のみを取得します。 以下は実装です- 例 import math def sumofoddFactors( n ): #prime factors res = 1 # ignore e
-
数の偶数因子の合計を見つけるためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 数値入力nが与えられた場合、タスクは数値の偶数因子の合計を見つけることです。 ここでは、最初にすべての奇妙な要因を排除する必要があります。 入力された数値が奇数の場合、偶数の因数はなく、直接ゼロを返します。それ以外の場合は、以下のコードのアプローチに従います。 以下は実装です- 例 import math # Returns sum of all even factors of n. def sumofFactors(n) : # If n is odd &nbs