Python中求除数的除数个数之和的程序

假设我们有两个整数 m 和 a。现在 n = p 1 (a + 1) *p 2 (a + 2) *...*p m (a + m),其中 p i是第 i 个素数且 i > 0。我们必须找到k 的值,其中 k = f(x)n 值的总和。这里的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
def summ(n):
   return ((n) * (n + 1)) // 2

def division(a, b, mod):
   if a % b == 0:
      return a // 乙
   a += mod * division((-a) % b, mod % b, b)
   return (a // 乙) % 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

猜你喜欢