1 - 求n的因子和
因子和函数σ定义为整数n的所有正因子之和,记为σ(n) 它是一个积性函数
首先对n进行因子分解 (因子分解代码附后)
n = p1^a1 * p2^a2 * ~~~ * px ^ ax
σ(n) =((p1^(a1+1)-1)/(p1-1) * ((p2^(a2+1)-1)/(p2-1) * .... * ((pj^(aj+1)-1)/(pj-1)) = Π(j=1 -> x) (pj^(aj+1)-1)/(pj-1)
Π:表示乘积的符号
举个例子: 12 = 2^2 * 3^1 = p1^a1 * p2^a2 (p1 = 2; a1 = 2; p2 = 3; a2 = 1)
而 12的因子有 1 2 3 4 6 12
1 = 2^0 * 3^0
2 = 2^1 * 3^0
3 = 2^0 * 3^1
4 = 2^2 * 3^0
6 = 2^1 * 3^1
12 = 2^2 * 3^1
左边加起来 = 1+2+3+4+6+12 = 28 = (2^0 + 2^1 + 2^2) * (3^0 + 3^1) = 右边
(2^0 + 2^1 + 2^2) 是一个首项为1,公比为2的等比数列
(3^0 + 3^1) 是一个首项为1 , 公比为3的等比数列
因为我们对n进行算数分解 所以不可能出现公比为1的情况
根据等比数列求和公式 (1 - q^n) / (1-q)
分子分母同时乘-1 (q^n - 1) / (q - 1)
因为第一项是从0开始的 所以 对于pi ^ ai 它的前n项和为 (pi^(ai+1) - 1) / (pi - 1)
所以 σ(n) = Π(i=1 -> x) (pi^(ai+1)-1)/(pi-1)
2 - 求n的因子个数
因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)
τ(n) = (b1+1) *