本篇博客讲解一下 xy 的因子数,因子和的求解问题。
首先根据算术基本定理(唯一分解定理)将 x 进行质因数分解:
x = p1c1 × p2c2 × ··· × pncn
则 x 的正因数可以表示为:{p1b1 p2b2 ··· pnbn} (0 ≤ bi ≤ ci)
每个 bi 有 ci + 1 种取法,根据乘法原理可得 x 的正因数个数为(Π为连乘积符号):
(c1 + 1) × (c2 + 1) × ··· × (cn + 1) = Πi=1n (ci + 1)
x 的所有正因数之和为:
(1 + p1 + p12 + ··· + p1c1) × (1 + p2 + p22 + ··· + p2c2) × ··· × (1 + pn + pn2 + ··· + pncn) = Πi=1n ( ∑j=0ci pi j )
解释如下:
p1c1 的因数有: p10, p11, p12, …, p1c1
… …
pncn 的因数有: pn0, pn1, pn2, …, pncn
而 x 的因数就是在 p1c1, p2c2, …, pncn 的因数中各取一个然后相乘得来,再由乘法原理得到上式。
经过上面的论述,同理可得:
xy = (p1c1 × p2c2 × p3c3 × … × pncn) y
xy 的正因数个数为:
(yc1 + 1) × (yc2 + 1) × ··· × (ycn + 1) = Πi=1n (yci + 1)
xy 的所有正因数之和为:
(1 + p1 + p12 + ··· + p1yc1) × (1 + p2 + p22 + ··· + p2yc2) × ··· × (1 + pn + pn2 + ··· + pnycn) = Πi=1n ( ∑j=0yci pi j )
至于计算,快速幂 + 等比数列求和公式 ( + 逆元 + 快速乘) 即可。
相关题目会后续更新。
如有错误或不足希望大家能够及时指出,谢谢。