Python中求除数的除数个数之和的程序
假设我们有两个整数m和a。现在n=p1(a+1)*p2(a+2)*...*pm(a+m),其中pi是第i个素数且i>0。我们必须找到k的值,其中k=f(x)n值的总和。这里的f(x)值是n的每个除数的除数值的数量。
因此,如果输入像m=2,a=1,那么输出将是60。
所以,n=2^2x3^3
n=4x27
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