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

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のフロア値を返す
  • 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

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

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

  2. 配列の合計を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '