Pythonの約数の約数の合計を求めるプログラム
2つの整数mとaが与えられていると仮定します。ここで、n =p 1 (a + 1) * p 2 (a + 2) * ... * p m (a + m) 、ここでp i はi番目の素数であり、i> 0です。kの値を見つける必要があります。ここで、k =nのf(x)値の合計です。ここで、f(x)値は、nの各除数の約数値の数です。
したがって、入力がm =2、a =1の場合、出力は60になります。
- つまり、n =2 ^ 2 x 3 ^ 3
- n =4 x 27
- n =108
108の約数は、1、2、3、4、6、9、12、18、27、36、54、108
です。各除数のf(x)値は次のとおりです。f(1)+ f(2)+ f(3)+ f(4)+ f(6)+ f(9)+ f(12)+ f(18)+ f(27)+ f(36)+ f(54)+ f(108)
=1 + 2 + 2 + 4 + 4 + 3 + 5 + 6 + 4 + 9 + 8 + 12
=60。
これを解決するには、次の手順に従います-
- MOD:=10 ^ 9 + 7
- 関数summ()を定義します。これにはn
- かかります
- ((n *(n + 1))/ 2)のフロア値を返す
- 関数division()を定義します。これにはa、b、mod
- が必要です
- mod bが0と同じ場合、
- a/bのフロア値を返す
- a:=a + mod * Division((-a modulo b)、(mod modulo b)、b)
- (a / b)モジュロmodのフロア値を返す
- mod bが0と同じ場合、
- mat:=値1を含む新しいリスト
- マットのサイズ<=m+ a、do
- マットの最後に(マットの最後の要素* summ(len(mat)+1))modMODを挿入します
- return Division(mat [m + a]、mat [a]、MOD)
例
理解を深めるために、次の実装を見てみましょう-
MOD = 10**9 + 7 def summ(n): return ((n) * (n + 1)) // 2 def division(a, b, mod): if a % b == 0: return a // b a += mod * division((-a) % b, mod % b, b) return (a // b) % mod def solve(m, a): mat = [1] while len(mat) <= m + a: mat.append((mat[-1] * summ(len(mat)+1)) % MOD) return division(mat[m + a] , mat[a], MOD) print(solve(2, 1))
入力
2, 1
出力
60
-
Pythonプログラムで数の偶数因子の合計を見つける
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、数値のすべての偶数因子の合計を表示する必要があります。 アプローチ 数値が奇数かどうかを確認し、偶数の因子がないため、0を返します。 数が偶数の場合、計算を実行します。 20を除く他のすべての項は、偶数の因数の合計を生成するために乗算されます。 偶数因子のすべての奇数を削除するために、1である20を無視します。このステップの後、偶数因子のみを取得しました。 2は私たちが利用できる唯一の素数であることに注意してください。 次に、以下の実装を見てみましょう- 例 # math
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '