乘法逆元
一 乘法逆元
若线性同余方程 \(ax \equiv 1 (\bmod b)\) 有解,则 \(x\) 是 \(a \bmod b\) 的乘法逆元。
于是利用扩展欧几里得算法 \(exgcd\) 解线性同余方程即可得到 \(a \bmod b\) 的乘法逆元。
1.1 “1” 的逆元
显然 \(\forall m > 1\) 有 \(1 \bmod m\) 的逆元为 \(1\) 。
1.2 逆元的运算法则
不难证明三个运算
1.3 同余
设整数 \(m \equiv 0\) ,若 \(\exists m \mid (a - b)\) ,称作 \(a\) 同余于 \(b\) 模 \(m\) ,记作 \(a \equiv b (\bmod m)\) 。
没有特殊说明时认为 \(m\) 是正整数。在模 \(m\) 意义下的前提下,简写成 \(a \equiv b\) 或 \(a = b\) 。
否则称作 \(a\) 不同余于 \(b\) 模 \(m\) ,记作 \(a \not \equiv b (\bmod m)\) 。
1.3.1 整除
若存在整数 \(a, b, q\) 有 \(a q = b\) ,则称作 \(a\) 整除 \(b\) ,写作 \(a \mid b\) 。
否则称作 \(a\) 不整除 \(b\) ,写作 \(a \nmid b\) 。
1.3.1.1 整除的意义
若 \(a \mid b\) ,则称 \(a\) 为 \(b\) 的约数(因数、因子),\(b\) 为 \(a\) 的倍数。
否则 \(a\) 不为 \(b\) 的因子,\(b\) 不为 \(a\) 的倍数。
1.3.1.2 整除的性质
-
传递性:若 \(a \mid b,\ b \mid c\) ,则 \(a \mid c\) 。
证明: 若 \(\exists q_1\) 有 \(a q_1 = b\) ,\(\exists q_2\) 有 \(b q_2 = c\) ,则 \(\exists q_3 = q_1 \cdot q_2\) 有 \(a q_3 = c\) 。\(\square\) -
\(a \mid b \Leftrightarrow a \mid -b\) 。
证明: 若 \(\exists q\) 有 \(aq = b\) ,则 \(\exists q' = -q\) 有 \(aq' = b\) 。\(\square\) -
若 \(a \mid b,\ b \mid a\) ,则 \(b = \pm a\) 。
证明: 若 \(aq_1 = b, bq_2 = a\) ,则 \(aq_1q_2 = a\) ,于是 \(q_1 = q_2 = \pm 1\) ,则 \(b = \pm a\) 。\(\square\) -
若 \(a \mid b,\ a \mid c\) ,则 \(a\) 整除 \(b, c\) 的线性表示。
证明: 若 \(a q_1 = b,\ a q_2 = c\) ,则 \(a(q_1 x + q_2 y) = xb \pm yc\) ,则 \(a \mid xb + yc\) 。\(\square\) -
若 \(a \mid b + c\) 或 \(aq + c = b\) ,有若 \(a \mid b \Leftrightarrow a \mid c\) 。
证明: 若 \(q a = b + c\) ,如果 \(\exists q_1,\ q_1 a = b \Leftrightarrow (q - q_1)a = c\) ,即如果有 \(a \mid b\) ,则 \(a \mid b \Leftarrow a \mid c\) 。\(\square\) -
若 \(a \mid b\) ,则 \(|a| \leq |b|\) 。
证明: 若 \(a q = b\) ,则 \(\exists l > 0\) 有 \(|a| l = |b|\) ,则 \(|a| \leq |b|\) 。\(\square\) -
若 \(a \mid c,\ b \mid c,\ gcd(a, b) = 1\) ,则 \(ab \mid c\) 。
证明:
一种证明:若 \(a \mid c,\ b \mid c\) ,则 \(a, b\) 的质因子集的交集为空,由唯一分解定理 \(ab \mid c\) 。
另一种证明:若 \(a \mid c,\ b \mid c\) ,则 \(lcm(a, b) \mid c\) 。又 \(gcd(a, b) = 1\) 则 \(lcm(a, b) = a b\) 于是 \(a b \mid c\) 。
\(\square\) -
若 \(a \mid bc\) ,则 \(\frac{a}{gcd(a, b)} \mid c\) 。
证明: 若 \(a \mid bc\) ,则 \(\frac{a}{gcd(a, b)} \mid \frac{b}{gcd(a, b)} c\) ,于是 \(\frac{a}{gcd(a, b)} \mid c\) 。\(\square\)
特殊的,若 \(a \mid bc,\ s.t.\ gcd(a, b) = 1\) ,显然 \(gcd(a, c) = a\) ,有 \(a \mid c\) 。 -
若 \(a \mid b c\ s.t.\ a \in P\) ,则 \(a \mid b\) 或 \(a \mid c\) 。
证明: 若质数 \(a\ s.t.\ a \in P\) 在 \(bc\) 的因子集内,则 \(a\) 至少在 \(b\) 或 \(c\) 的质因子集内。\(\square\) -
若 \(a \mid b c\ s.t.\ gcd(a, b) = 1\) ,则 \(a \mid c\) 。
证明: 若 \(gcd(a, b) = 1\) ,则 \(a \mid b\) 。又 \(a \mid b c\) ,则 \(a \mid c\) 。\(\square\)
1.3.1.3 取整相关
- 定义:\(\lfloor x \rfloor \leq x < \lfloor x \rfloor + 1\) 。\(\lfloor x \rfloor\) 称作 \(\leq x\) 的最大整数。
- 定义:\(\lceil x \rceil - 1 < x \leq \lceil x \rceil\) 。\(\lceil x \rceil\) 称作 \(\geq x\) 的最大整数。
- 定义\(\{x\} = x - \lfloor x \rfloor\) 。\(\{x\}\) 称作 \(x\) 的分数部分。
- \(\lfloor n + x \rfloor = n + \lfloor x \rfloor\ s.t.\ n \in N, x \in R\) 。
证明:已知 \(\lfloor x \rfloor \leq x < \lfloor x \rfloor + 1\) ,于是 \(n + \lfloor x \rfloor \leq n + x < n + \lfloor x \rfloor + 1\) 。于是 \(n + \lfloor x \rfloor x\) 是 \(\leq n + x\) 的最大整数,于是有 \(n + \lfloor x \rfloor = \lfloor n + x \rfloor\) 。\(\square\) - \(\lceil n + x \rceil = n + \lceil x \rceil\ s.t.\ n \in N, x \in R\) 。
证明:已知 \(\lceil x \rceil - 1 < x \leq \lceil x \rceil\) ,于是 \(n + \lceil x \rceil - 1 < n + x \leq n + \lceil x \rceil\) 。于是 \(n + \lceil x \rceil\) 是 \(\geq n + x\) 的最大整数,于是有 \(\lceil n + x \rceil = n + \lceil x \rceil\) 。\(\square\)
注:可以提取整数,但显然不能提取正负号。 - \(a - b < \lfloor \frac{a}{b} \rfloor b \leq a\ s.t.\ b > 0\) 。(分数下取整转区间限制)
证明:已知 \(\lfloor \frac{a}{b} \rfloor \leq \frac{a}{b} < \lfloor \frac{a}{b} \rfloor + 1\) ,于是有
6.1) \(\lfloor \frac{a}{b} \rfloor b \leq a\) 。
6.2) \(a < \lfloor \frac{a}{b} \rfloor b + b\) ,即 \(\frac{a}{b} b > a - b\) 。
于是有 $ a - b < \lfloor \frac{a}{b} \rfloor b \leq a$ 。\(\square\)
然后可放缩成 \(a - b + 1 \leq \lfloor \frac{a}{b} \rfloor b \leq a\ s.t. b > 0\) 。 - \(a \leq \lceil \frac{a}{b} \rceil b < a + b\ s.t.\ b > 0\) 。(分数上取整转区间限制)
证明:已知 \(\lceil \frac{a}{b} \rceil - 1 < \frac{a}{b} \leq \lceil \frac{a}{b} \rceil\) ,于是有
7.1) \(\lceil \frac{a}{b} \rceil b - b < a\) ,即 \(\lceil \frac{a}{b} \rceil b < a + b\) 。
7.2) \(a \leq \lceil \frac{a}{b} \rceil b\) 。
于是有 \(a \leq \lceil \frac{a}{b} \rceil b < a + b\) 。\(\square\)
然后可放缩成 \(a \leq \lceil \frac{a}{b} \rceil b \leq a + b - 1\ s.t.\ b > 0\) 。
注 1 :若 \(b < 0\) 按上述证明方式也可以推出某个两个公式。
注 2 :注意放缩过程中若存在浮点数比较,大于、小于号不能朝大于等于、小于等于号方向放缩。 - 若 \(a \leq 0, b > 0\) ,\(l \leq a b \leq r \Rightarrow \frac{l}{b} \leq a \leq \frac{r}{b} \Rightarrow \lceil \frac{l}{b} \rceil \leq a \leq \lfloor \frac{r}{b} \rfloor\) 。(分数区间限制转取整)
证明: 显然经过一步放缩可以得到。\(\square\) - 若 \(m > 0\) ,则 \(\lfloor \frac{a - 1}{m} \rfloor + 1 = \lceil \frac{a}{m} \rceil\) 。( \(0\) 取整转上取整)
证明: 令 \(a = km + t\ s.t.\ 0 \leq t \leq m - 1\) ,要证 \(\lfloor \frac{a - 1}{m} \rfloor + 1 = \lceil \frac{a}{m} \rceil\) ,则需证 \(\lfloor \frac{km + t - 1}{m} \rfloor + 1 = \lceil \frac{km + t}{m} \rceil\) ,则需证 \(k + \lfloor \frac{t - 1}{m} \rfloor + 1 = k + \lceil \frac{t}{m} \rceil\) 。
当 \(t = 0\) , \(-1 < \frac{0 - 1}{m} < 0\) 于是 \(\lfloor \frac{0 - 1}{m} \rfloor = -1\) , \(\frac{0 + t}{m} = 0\) 。左边为 \(k + \lfloor \frac{0 - 1}{m} \rfloor + 1 = k - 1 + 1 = k\) ,右边为 \(k + \lceil \frac{0 + t}{m} \rceil = k\) 。等式成立。
当 \(1 \leq t \leq m - 1\) ,\(0 \leq \frac{t - 1}{m} < 1\) 于是 \(\lfloor \frac{t - 1}{m} \rfloor = 0\) ,\(0 < \frac{t}{m} < 1\) 于是 \(\lceil \frac{t}{m} \rceil = 1\)。左边为 \(k + \lfloor \frac{t - 1}{m} \rfloor + 1 = k + 0 + 1\) 。右边为 \(k + \lceil \frac{t}{m} \rceil = k + 1\) 。等式成立。
\(\square\) - 若 \(m < 0\) ,则 \(\lceil \frac{a - 1}{m} \rceil - 1 = \lfloor \frac{a}{m} \rfloor\) 。( \(0\) 取整转下取整)
证明: 令 \(a = km + t\ s.t.\ 0 \leq t \leq 1 - m\) ,要证 \(\lceil \frac{a - 1}{m} \rceil - 1 = \lfloor \frac{a}{m} \rfloor\) ,则需证 \(\lceil \frac{km + t - 1}{m} \rceil - 1 = \lfloor \frac{km + t}{m} \rfloor\) ,则需证 \(k + \lceil \frac{t - 1}{m} \rceil - 1 = k + \lfloor \frac{t}{m} \rfloor\) 。
当 \(t = 0\) ,\(0 < \frac{0 - 1}{m} < 1\) 于是 \(\lceil \frac{0 - 1}{m} \rceil = 1\) , \(\frac{0}{m} = 0\) 于是 \(\lfloor \frac{0}{m} \rfloor = 0\) 。左边为 \(k + \lceil \frac{0 - 1}{m} \rceil - 1 = k + 1 - 1\) ,右边为 \(k + \lfloor \frac{0}{m} \rfloor = k + 0\) 。等式成立。
当 \(1 \leq t \leq 1 - m\) , \(0 \leq \frac{t - 1}{m} \leq 1\) 于是 \(\lceil \frac{t - 1}{m} \rceil = 1\) , \(-1 < \frac{t}{m} < 0\) 于是 \(\lfloor \frac{t}{m} \rfloor = -1\) 。左边为 \(k + \lceil \frac{t - 1}{m} \rceil - 1 = k + 0 - 1\) ,右边为 \(k + \lfloor \frac{t}{m} \rfloor = k + (-1)\) 。等式成立。
\(\square\)
注:令 \(x = a - 1\) 会得到另外两个公式,但在计算机实现中并不重要。因为计算机零取整的性质,确保了 \(m > 0\) 时使用下取整,\(m < 0\) 时使用上取整。 - 若 \(m > 0\) ,\(\lfloor \frac{a}{m} \rfloor + \lfloor \frac{b}{m} \rfloor \leq \lfloor \frac{a}{m} + \frac{b}{m} \rfloor\) 。
证明: 根据 \(\frac{a}{b}b + a \bmod b = a\) ,要证 \(\lfloor \frac{a}{m} \rfloor + \lfloor \frac{b}{m} \rfloor \leq \lfloor \frac{a + b}{m} \rfloor\) ,则需证 \(\frac{a - a \bmod m}{m} + \frac{b - b \bmod m}{m} \leq \frac{a + b - (a + b) \bmod m}{m}\) ,则需证 \(a \bmod m + b \bmod m \geq (a + b) \bmod m\) 。由模意义下的运算法则,当 \(m > 0\) 有 \(a \bmod m + b \bmod m \geq (a \bmod m + b \bmod m) \bmod m = (a + b) \bmod m\) 。\(\square\) - 若 \(m > 0\) ,\(\lceil \frac{a + b}{m} \rceil \leq \lceil \frac{a}{m} \rceil + \lceil \frac{a}{m} \rceil\) 。
证明: 根据 \(\lceil \frac{a}{b} \rceil b - b + a \bmod b\) ,要证 \(\lceil \frac{a + b}{m} \rceil \leq \lceil \frac{a}{m} + \frac{b}{m} \rceil\) ,则需证 $ \frac{(a + b) + m - (a + b) \bmod m}{m} \leq \frac{a + m - a \bmod m}{m} + \frac{b + m - b \bmod m}{m}$ ,则需证 \((a + b) \bmod m \geq a \bmod m + b \bmod m - m\) ,由模意义下的运算法则,当 \(m > 0\) 有 \((a + b) \bmod m = (a \bmod m + b \bmod m) \bmod m \geq (a \bmod m + b \bmod m) - m\) 。\(\square\)
注:若 \(m < 0\) ,用上述证明方式也可推得不等号要取反。
1.3.2 同余的性质
-
自反性:\(a\) 同余于 \(a\) 模 \(m\) 。
证明: 显然 \(m \mid (a - a)\) ,则 \(a \equiv a (\bmod m)\) 。\(\square\) -
对称性:若 \(a\) 同余于 \(b\) 模 \(m\) ,则 \(b\) 同余于 \(a\) 模 \(m\) 。
证明: 若 \(a \equiv b (\bmod m)\) ,则 \(m \mid (a - b) = -(b - a)\) ,于是 \(m \mid (b - a)\) ,则 \(b \equiv a (\bmod m)\) 。\(\square\) -
传递性:若 \(a\) 同余于 \(b\) 模 \(m\) ,\(b\) 同余于 \(c\) 模 \(m\) 。
证明: 若 \(a \equiv b (\bmod m), b \equiv c (\bmod m)\) ,则 \(m \mid (a - b), m \mid (b - c)\) ,于是 \(m \mid (a - b + b - c) = (a - c)\) ,则 \(a \equiv c (\bmod m)\) 。\(\square\) -
线性运算:若 \(a \equiv b (\bmod m),\ c \equiv d (\bmod m)\) ,则有
1). \(a x + c y \equiv b x + d y (\bmod m)\)
证明: 若 \(m \mid a - b,\ m \mid c - d\) ,则 \(m \mid x(a - b) + y (c - d) = ax + cy - bx - dy\) ,于是 \(a x + cy \equiv bx + d y (\bmod m)\) 。\(\square\)
2). \(a \times c \equiv b \times d (\bmod m)\)
证明: 若 \(m \mid a - b,\ m \mid c - d\) ,则 \(m \mid c (a - b) + b (c - d) = ac - bc + bc - bd = ac - bd\) ,于是 \(ac \equiv bd (\bmod m)\) 。注意可以结合同余方程的自反性。\(\square\) -
若 \(da \equiv db (\bmod m)\) ,则 \(a \equiv b (\bmod \frac{m}{gcd(m, d)})\) 。
证明: 若 \(da \equiv db (\bmod m)\) ,则 \(\frac{d}{gcd(m, d) a \equiv \frac{d}{gcd(m, d)} b (\bmod \frac{m}{d})}\) ,于是 \(a \equiv b (\bmod \frac{m}{gcd(m, d)})\) 。\(\square\)
这个性质的启发是,同余式两边可以同时乘以一个 \(d\) ,但是只能除去 \(gcd(m, d)\) 。
推论:若同余式两边存在因子 \(d\) 满足 \(gcd(m, d) = 1\) ,则同余式可以免费提出 \(d\) 。
证明: 这个推论可以用另一种方法证明,若 \(gcd(a, m) = 1\) ,则 \(a, m\) 没有公共质因子,于是对于方程 \(da \equiv db (\bmod m)\) ,由唯一分解定理有 \(a \equiv b (\bmod m)\) 。\(\square\) -
若 \(a \equiv b (\bmod m) \wedge d \mid m\) ,则 \(a \equiv b (\bmod d)\) 。
证明: 若 \(m \mid a - b,\ d \mid m\) ,显然 \(d \mid a - b\) ,于是 \(a \equiv b (\bmod d)\) 。\(\square\)
1.4 线性同余方程
形如
方程被称为线性同余方程。
\(ax \equiv b (\bmod m)\) 可以写作方程 \(ax + my = b\) 。
由裴蜀定理,方程有解的充要条件为 \(gcd(a, m) \mid b\) 。
1.4.1 裴蜀定理
裴蜀定理说明了对于任意不同时为 \(0\) 的整数 \(a, b\) 和它们的最大公约数 \(g\) ,关于未知数 \(x, y\) 的不定方程。
裴蜀定理:对于任意 \(a, b\) 为不同时为 \(0\) 的整数,有 \(\forall x, y\) 满足 \(gcd(a, b) \mid ax + by\) ,\(\exists x, y\) 满足 \(ax + by = gcd(a, b)\) 。
它的重要推论为:\(gcd(a, b) = 1 \ s.t.\ a \cdot b \neq 0 \Leftrightarrow \exists x,y,\ ax + by = 1\) 。
裴蜀定理 1 的证明:
由于 \(gcd(a, b) \mid a,\ gcd(a, b) \mid b\) ,显然有 \(gcd(a, b)\) 整除 \(a, b\) 的现行表示,即 \(gcd(a, b) \mid ax + by\) 。
裴蜀定理 2 的证明:
若 \(a, b\) 中有一个为 \(0\) ,\(gcd(a, b) \mid ax + by\) 显然成立。
若 \(a, b > 0\) 。设 \(a > b > 0,\ gcd(a, b) = g\) 。要证 \(ax + by = gcd(a, b)\) 有解,只需证 \(\frac{a}{g} x + \frac{b}{g} y = 1\) 有解,且显然解集相同。
令 \(a_1 = \frac{a}{g},\ b_1 = \frac{b}{g}\) ,构造有
再令 \(a_2 = b_1, b_2 = (a_1 \bmod b_1)\) \(, x_1 = b_1 (\lfloor \frac{a_1}{b_1} \rfloor x + y),\ y_1 = x\) 。
则有 \(f(a_1, b_1, x, y) = f(b_1, a_1 \bmod b_1, x_1, y_1)\) ,可以递归执行。
当 \(a_n x_{n - 1} + 0 \cdot y_{n - 1} = 1\) ,此时有 \(gcd(a_n, 0) = 1\) ,显然此时 \(a_n = 1\) 且解得 \(x_{n - 1} = 1\) 。
可以定义一个 \(y_{n - 1}\) ,然后递归向上可以解得一组 \(x, y\) 。
\(\square\)
这部分构造性证明也被用来作为 \(exgcd\) 的步骤,并在递归结束时定义 \(x_{n - 1} = 1, y_{n - 1} = 1\) 。
裴蜀定理重要推论的证明:
正向:由裴蜀定理,若 \(gcd(a, b) = 1\) ,则 \(ax + by = gcd(a, b) = 1\) 有解。
逆向:由裴蜀定理,若 \(ax + by = 1\) 有解,则 \(gcd(a, b) \mid 1\) ,显然 \(gcd(a, b) = 1\) 。
\(\square\)
实现上,只解决裴蜀定理的重要推论,经过解集调整后可以解决任意线性同余方程。而裴蜀定理重要的是它的数学意义。
1.4.2 裴蜀定理推广(证略)
对于 \(n\) 个不全为 \(0\) 的整数 \(a_1, a_2, \cdots, a_n\) 。
- \(\forall x_1, x_2, \cdots, x_n\) 有 \(gcd(a_1, a_2, \cdots, a_n) \mid a_1 x_1 + a_2 x_2 + \cdots a_n x_n\)
- \(\exists x_1, x_2, \cdots, x_n\) 有 \(a_1 x_2 + a_2 x_2 + \cdots a_n x_n = gcd(a_1, a_2, \cdots, a_n)\)
重要推论:不全为 \(0\) 的 \(n\) 个数有 \(gcd(a_1, a_2, \cdots, a_n) = 1 \Leftrightarrow \exists x_1, x_2, \cdots, x_n \ a_1 x_1 + a_2 x_2 + \cdots + a_n x_n = 1\)
1.5 欧几里得算法相关
基于欧几里德算法,可以得到多种算法和定理。
1.5.1 因数和倍数
\(\forall x \mid a\) 的集合 \(A_1\) 为 \(a\) 的因数集合,\(\forall y = a q\) 的集合 \(A_2\) 为 \(a\) 的倍数集合。
对于两个数 \(a, b\) ,\(A_1 \cap B_1\) 为 \(a, b\) 的公因数,\(A_2 \cap B_2\) 为 \(a, b\) 的公倍数。
特别的:
\(A_1 \cap B_1\) 的极大元为 \(a, b\) 的最大公因数,写作 \(gcd(a, b)\) 或 \((a, b)\) 。
\(A_2 \cap B_2\) 的极小元为 \(a, b\) 的最小公倍数,写作 \(lcm(a, b)\) 或 \([a, b]\) 。
一般对因数的研究更侧重于质因数和最大公因数。质因数分解唯一和最大公因数具有许多良好性质,常见于许多公式推导中。
一般倍数的研究侧重于最大公倍数。最常见的应用如:循环节长度的推导。
1.5.2 最大公因数和最小公倍数常见性质
通常认为 \(gcd(a, b) = a,\ s.t.\ a \neq 0\) 。
性质 1 (gcd 的唯一分解定理):
推论:gcd 的本质是质因子的交集
性质 2 :\(gcd(a, b, c) = gcd(gcd(a, b) c)\) 。(常见的递推性质)
证明:由唯一分解定理,则显然。\(\square\)
性质 3 :\(gcd(a, b, c, d) = gcd( gcd(a, b), gcd(c, d) )\) 。(特殊情形下的分组性质)
证明:由唯一分解定理,则显然。\(\square\)
性质 4 :\(a_1, a_2, a_3, \cdots, a_k\) 提取掉 \(gcd(a_1, a_2, a_3, \cdots, a_k)\) 后,\(a_1, a_2, a_3, \cdots, a_k\) 质因子集的交集为空。且仍是整数。(常见于多种情形,公式化简、最强约束、使互质)
证明:由唯一分解定理,对 \(\forall p_x\) ,\(\exists a_i\) 的 \(e_x\) 被提掉,即 \(p_x\) 被提掉。于是所有数的质因子交集为空集。\(\square\)
推论:\(a, b\) 提调 \(gcd(a, b)\) 没有公共质因子。且仍是整数。
性质 5 :\(1 \leq gcd(a_1, a_2, a_3, \cdots, a_k) \leq min(a_1, a_2, a_3, \cdots, a_k),\ max(a_1, a_2, a_3, \cdots, a_k) \leq lcm(a_1, a_2, a_3, \cdots, a_k) \leq a_1 \cdot a_2 \cdot a_3 \cdot \cdots \cdot a_k\) 。(gcd 和 lcm 的直观约束)
证明:由唯一分解定理,则显然。\(\square\)
性质 6 :\(gcd(a, b) = gcd(b, a - b)\ s.t. a \geq b\) 。
证明:在欧几里得算法中将会证明。
性质 7 :\(gcd(a, b)\) 的质因子集为 \(a, b\) 的公共质因子集。\(GCD_{i = 1}^{k} a_i\ s.t.\ k > 2\) 的质因子集为 \(a_i\) 的质因子交集而非公共质因子集。
这个性质意味着不是所有双元 gcd 都能扩展到高元 gcd 。
性质 8 :\(d \mid a_1,\ d \mid a_2,\ d \mid a_2,\ \cdots,\ d \mid a_k \Leftrightarrow d \mid gcd(a_1, a_2, a_3, \cdots, a_k)\) 。
一种证明:\(\forall i,\ d \mid a_i\) 即 \(d\) 是所有 \(a_i\) 的公因子。又由唯一分解定理,\(d\) 的多重质因子集包含于 \(gcd(a_1, a_2, a_3, \cdots, a_k)\) 的多重质因子集,于是 \(d \mid gcd(a_1, a_2, a_3, \cdots, a_k)\) 。反之若 \(d \mid gcd(a_1, a_2, a_3, \cdots, a_k)\) 的多重质因子集,则 \(d\) 是 \(a_1, a_2, a_3, \cdots, a_k\) 的因子\(\square\)
另一种证明: 由裴蜀定理,\(g\) 的所有倍数 \(a_1, a_2, a_3, \cdots, a_k\) 构成了的线性表示。又 \(d\) 整除 \(a_1, a_2, a_3, \cdots, a_k)\) 的所有线性表示,于是有 \(d \mid g\) 。\(\square\)
性质 1 (lcm 的唯一分解定理):
推论:lcm 的本质是质因子的并集。
性质 2 (乘法意义的唯一分解定理)
性质 3 :\(lcm(a, b, c) = lcm(lcm(a, b) c)\) 。(常见的递推性质)
性质 4 :\(lcm(a, b, c, d) = lcm( lcm(a, b), lcm(c, d) )\) 。(特殊情形下的分组性质)
性质 5 :\(x \mid a_1, x \mid a_2, x \mid a_3, \cdots, x \mid a_k \Rightarrow x \mid lcm(a_1, a_2, a_3, \cdots, a_k)\) 。
一种证明: \(x\) 属于 \(\forall a_i\) 的质因子集,则 \(x\) 属于 \(\forall a_i\) 的质因子并集。反之不成立。
另一种证明: 若 \(x \mid a_i\) ,由 \(a_i \mid lcm(a_1, a_2, a_3, \cdots, a_k)\) ,则 \(x \mid lcm(a_1, a_2, a_3, \cdots, a_k)\) 。
\(\square\)
性质 6 :\(x_1 \mid m, x_2 \mid m, x_3 \mid m,\cdots, x_k \mid m \Leftrightarrow lcm(x_1, x_2, x_3, \cdots, x_k) \mid m\) 。
证明: \(\forall x_i\) 属于 \(m\) 的质因子集,则 \(\forall x_i\) 的质因子并集属于 \(m\) 的质因子集。反之若 \(\forall x_i\) 的质因子并集属于 \(m\) 的质因子集,则 \(\forall x_i\) 的质因子集属于 \(m\) 的质因子集。\(\square\)
性质 7 :\(A = \{a_1, a_2, a_3, \cdots, a_n\},\ \bigcup x_i \in A \Rightarrow lcm(x_1, x_2, x_3, \cdots, x_m) \mid lcm(a_1, a_2, a_3, \cdots, a_n)\) 。
证明: 显然 \(A\) 的子集的质因子并集属于 \(A\) 的质因子并集。\(\square\)
性质 8 :\(gcd(a, b) = 1 \Leftrightarrow lcm(a, b) = a b\) 。
证明: \(a, b\) 的公共质因子集为空,则 \(a b\) 的任意一个 \(p_x^{max\{e_{x_a}, e_{x_b}\}}\) 一定有一个为 \(0\) 而另一个非 \(0\) ,于是 \(p_x^{max\{e_{x_a}, e_{x_b}\}} = p_x^{e_{x_a} + e_{x_b}}\) 。\(\square\)
而超过两个数时 gcd 与公共质因子集无关,于是也没有上述性质。
性质 9 :\(gcd(a, b) \cdot lcm(a, b) = a b\) 。
证明: 由唯一分解定理,\(a b\) 的任意一个 \(p_x\) 的系数 \(e\) 满足 \(e_x = max\{e_{x_a}, e_{x_b}\} + min\{e_{x_a}, e_{x_b}\}\) 。\(\square\)
显然若超过两个数则没有这种性质。
两个数讨论公共质因子,多个数讨论质因子交集。
1.5.2.1 模意义下的运算法则
模意义下运算法则定义:
-
\((a + b) \bmod m = (a \bmod m + b \bmod m) \bmod m\)
-
\((a \cdot b) \bmod m = (a \bmod m \cdot (b \bmod m)) \bmod m\)
-
\(\frac{a}{b} \bmod m = a \cdot b^{-1} \bmod m\)
1.5.2.2 模意义下的线性函数
模 \(m\) 意义下的形如
的数论函数,比较常见。
数论函数即定义域在整数上的函数,离散数学中的函数基本都是数论函数。
解的取值 \(f(x) \in [0, m - 1]\) ,令 \(f(x) \textbf{的集合为} S\) 。
-
\(|S| = \frac{lcm(a, m)}{a}\) 。
证明: 设 \(g(x) = ax\) ,令 \(g(x) \textbf{的集合为} S'\) 。第一个 \(k\) 满足 \(g(k) \equiv g(0) (\bmod m)\) 时有 \(g(k) = lcm(a, m)\) ,于是 \(g(x)\) 在 \(x \geq 0\) 处有一个长度为 \(k = \frac{lcm(a, m)}{a}\) 的循环节。由于 \(\forall x \neq y \in [0, lcm(a, m) - 1]\) 有 \(g(x) \not \equiv g(y)\) ,由同余线性运算 \(\forall x \neq y \in [0, lcm(a, m) - 1]\) 有 \(f(x) \not \equiv f(y)\) ,于是 \(|S| = \frac{lcm(a, m)}{a}\) 。
\(\square\)循环节:若 \(h(x)\) 在 \(x \geq v\) 处有一个长为 \(l\) 的循环节,则在 \(x \geq v\) 处任选长为 \(l\) 的区间,往左往右的连续段长为 \(l\) 的区间(如果不越界),解集一样。
-
\(\textbf{相邻} y \in S\) 差值 \(d = gcd(a, m)\) 。
证明: 设 \(g(x) = ax\) ,令 \(g(x) \textbf{的集合为} S'\) 。显然有 \(gcd(a, m) \mid g(x_i) = ax_i - my\) 。可以构造性证明出,只有 \(g(x) = gcd(a, m) \cdot x\ s.t.\ x \geq 0\) 才满足 \(g(x)\) 在模 \(m\) 意义下有 \(|S'| = \frac{m}{gcd(a, m)} = \frac{lcm(a, m)}{a}\) ,且 \(\forall x,\ gcd(a, m) \mid g(x)\) 。于是 \(\textbf{相邻} y \in S'\) 差值 \(d' = gcd(a, m)\) 。在模 \(m\) 意义下线性偏移 \(b\) 后,有 \(\textbf{相邻} y \in \{ax + b\} = S\) 的差值为 \(gcd(a, m)\) 。\(\square\) -
\(ax + b (\bmod m) \Rightarrow ((a \bmod m)x + (b \bmod gcd(a, m))) (\bmod m)\) 。
证明:- 根据模意义下的运算法则显然可以有 \(ax + b \equiv (a \bmod m)x + (b \bmod m)\) 。
- 已知解的差值为 \(gcd(a, m)\) ,则 \(b = b - l \cdot gcd(a, m) \geq 0 \Leftrightarrow b = b \bmod gcd(a, m)\) 。\(\square\)
1.5.3 欧几里得算法相关
重要性质1:\(gcd(a, b) = gcd(b, a - b)\ s.t.\ a \geq b\) 。
证明:
当 \(a = b\) ,显然 \(gcd(a, b) = gcd(b, 0) = a\) 。
当 \(a > b\) 。
- 设 \(g_1 = gcd(a, b)\) ,则 \(g_1 \mid a,\ g_1 \mid b\) 。由线性关系有 \(g_1 \mid a - b\) 。于是 \(g_1 = gcd(a, b) \mid gcd(b, a - b)\) 。
- 设 \(g_2 = gcd(b, a - b)\) ,则 \(g_2 \mid b,\ g_2 \mid a - b\) 。由线性关系有 \(g_2 \mid a\) 。于是 \(g_2 = gcd(b, a - b) \mid gcd(a, b)\) 。
于是 \(gcd(a, b) = gcd(b, a - b)\) 。
当 \(a < b\) ,\(swap(a, b)\) 。\(\square\)
上述性质的证明,同时得到了一个得到最大公约数的算法,但并不非常关键。
这个算法叫做更相减损术,当 \(a, b\) 有一个为 \(1\) 时,最坏复杂度可以达到 \(O(max{a, b})\) 。
\(gcd(a, b) = gcd(b, a - b)\) 的其中一个关键作用,在于推出 \(gcd(a, b) = gcd(b, a \bmod b)\) 。
推论:\(gcd(a, b) = gcd(b, a - k b)\ s.t.\ a \geq k b\) 。同理可以由线性关系证明。
于是得到了重要性质2:\(gcd(a, b) = gcd(b, a \bmod b)\) 。
由重要性质 2 可得到一个求 \(gcd\) 的算法,此算法即辗转相除法,亦叫欧几里得算法。
\(gcd(a, b) = gcd(b, a \bmod b)\) ,令 \(a_1 = b, b_1 = a \bmod b\) 并递归计算即可。不难发现 \(a_k \bmod b_k\) 会递减到 \(0\) ,此时 \(gcd(a_{k + 1}, b_{k + 1}) = gcd(a_{k + 1}, 0) = a_{k + 1}\) 。
时间复杂度分析:
若 \(a \geq 2 b\) ,显然 \(a \bmod b < b \leq \frac{a}{2}\) 。\(a\) 至少减少一半。
若 \(b \leq a < 2 b\) ,则 \(b > \frac{a}{2}\) ,于是 \(a \bmod b = a - b < \frac{a}{2}\) 。\(a\) 至少减少一半。
若 \(a < b\) ,\(gcd(b, a \bmod b) = gcd(b, a)\) 。即经过一次递归后即可 \(O(1)\ swap(a, b)\) 。
于是复杂度为 \(T(c \log max\{a, b\}) = O(\log max\{a, b\})\) 。
1.5.4 扩展欧几里得算法 exgcd 及应用
1.5.4.1 exgcd 的算法流程
令 \(g = gcd(a, b)\) 。
exgcd 算法用来求解方程
由裴蜀定理,这种方程有解。
令 \(a_1 = \frac{a}{g},\ b_1 = \frac{b}{g}\) 。
执行过程中我们常求解
此时可以用裴蜀定理证明中的方法,构造性求解得到一组 \(x, y\) 。
并且在递归终止时会选取 \(x = 1, y = 0\) 。
利用 exgcd 得到的解最多经过一次调整可得到方程的最小非负解 \(x_0\) 。
时间复杂度分析的形式与 gcd 的分析完全相同,即时间复杂度为 \(O(\log max{a, b})\) 。
1.5.4.2 exgcd 算法的通解
令 \(gcd(a, b) = g\)
对于
假设一组解是 \(x_0, y_0\) 。
根据四则运算法则,直观上可发现一个显然的约束 \(a(x_0 + t \cdot b) + b(y_0 - t \cdot a) = g\) 。
容易证明,对这个约束,提取 \(a, b\) 的因子将依旧成立。
根据最大公因子性质:\(a, b\) 提取掉最大公因子后不再有公因子。
于是直接提取最大公因子后可以得到一个最强的约束, \(a (x_0 + t \cdot \frac{b}{g} + b (y_0 - t \cdot \frac{a}{g}) = g)\) 。
于是 \(ax + by = g\) 的通解为
1.5.4.3 exgcd 算法的值域分析
对于 \(ax + by = g\) ,利用 \(exgcd\) 求解过程中,结束层之前的所有 \(x, y\) 满足 \(|x| \leq b,\ |y| \leq a\) 。
证明:
观察
显然过程中 \(a, b \geq 0\) ,于是作为前提。
-
当 \(a = 1, b = 0\) 。
此时递归为结束层,我们会定义 \(x = 1, y = 0\) 。 -
当 \(a = b\ s.t.\ b \neq 0\) ,递归会在下一层结束。
此时有 \(b_1 = a \bmod b = 0, a_1 = 1\) ,定义 \(x_1 = 1, y_1 = 0\) 。
由 \(x_1 = \lfloor \frac{a}{b} \rfloor x + y,\ y_1 = x\) ,可得 \(x = y_1,\ y = x_1 - \lfloor \frac{a}{b} \rfloor y_1\) 。
于是 \(x = 0, y = 1\) ,满足 \(|x| \leq b, |y| \leq a\) 。 -
当 \(a \neq b\) 。
此时我们设 \(x_1 \leq b_1, y_1 \leq a_1\) 。
由 \(x = y_1 \leq a_1 = b\) ,有 \(|x| = |y_1| \leq |a_1| = |b|\) (已知 \(a,b \leq 0\))。
由 \(y = x_1 - \lfloor \frac{a}{b} \rfloor y_1\) ,有
然后可以向上归纳。
由 \(1, 2, 3\) ,所有递归层都满足条件。
推论:由 exgcd 的通解与值域分析, exgcd 解出的解是一定最小但不一定非负的。
#绝对值不等式
证明:
通过几何向量的概念有
左边:两边之差小于第三边
右边:两边之和大于第三边
\(\square\)
1.5.4.4 用 exgcd 解决非平凡问题
ecgcd 真正在使用时往往解的是非平凡方程
由裴蜀定理若 \(g \mid d\) 有解。
令 \(a_1 = \frac{a}{g},\ b = \frac{b}{g},\ d_1 = \frac{d}{g}\) ,等于解方程
可以通过 \(exgcd\) 解出
的最小非负解 \(x^{'}_0\) 。通解为 \(x^{'} = x^{'}_0 + t \frac{b_1}{1} = x^{'}_0 + t \cdot b_1\)
然后原方程的最小非负解为 \(x_0 = x^{'}_0 \cdot (d_1 \bmod b_1) \bmod b_1\) 。
由一个显然的约束 \(a_1 (x + t \cdot \frac{b_1}{1}) + b_1 (y - t \cdot \frac{a_1}{1}) = d_1\) ,于是通解为 \(x = x_0 + t \frac{b_1}{1} = x_0 + t \cdot b_1\) 。
更明确地,两个未知数可以直接算出一个,另一个间接算出。
即有
或
在解同余方程时通常只关系一维情况,于是不关心 \(y\) 的结果。
但在针对二维问题时,\(y\) 的结果也将变得重要。
1.5.4.5 用 exgcd 解 ax - by = d
只需解 \(ax + by = d\) 得到 \(x_0\) ,于是 \(y_0 = \frac{ax - d}{b}\) 。
1.5.5 类欧几里得算法
类欧几里得算法是一类问题的解决方法,会在其他地方单独介绍。
1.5.6 gcd 与 同余方程 相关的几何问题
这是一类问题,在其他文章中提出。
1.6 CRT
对于一类方程组
若 \(\forall i, m_i\) 两两互质,则 \(X\) 在 \([0, \prod m_i - 1]\) 有唯一解。
证明:
解的存在性:
若两个方程有解,则由 EXCRT 可合并为一个方程。于是最终所有方程可合并,即方程组有解。
于是只需证两个方程有解。
若 \(gcd(m, n) = 1\) 且方程组。
有解。
则 \(\equiv p\) 有 \(X = a + p m\) 且 \(\equiv q\) 有 \(X = b + q n\) 。
- 引理:\(n\) 个数 \(a, a + m, a + 2m, \cdots, a + (n - 1)m\) 是 \(\bmod n\) 的完全剩余系。
证明: 若 \(\exists 0 \leq i < j \leq n - 1\) 有 \(a + i m \equiv a + j m (\bmod n)\) ,则 \(n \mid (j - i) m\) 。由 \(gcd(n, m) = 1\) ,则 \(n \mid j - i\) 。又 \(1 \leq j - i \leq n - 1\) ,矛盾。于是可以断言这 \(n\) 个数 \(\bmod n\) 两两不同,由鸽巢原理,这 \(n\) 个数取遍 \(0 \sim n - 1\) ,即是 \(\bmod n\) 的完全剩余系。 \(\square\)
由引理,\(\exists 0 \leq p \leq n - 1\) 使 \(a + p m \equiv b (\bmod n)\) 有解。
有解时,令 \(X = a + p m\) ,于是 \(\exists p\) 有 \(b + q n = a + p m = X\) 。
\(\square\)
解的唯一性:
对于单个方程,显然除数除以被除数的余数小于被除数。
对于方程组,由 EXCRT ,方程组最终为 \(X \equiv a_1 + \sum_{i = 1}^{k} \sum_{j = 1}^{i} m_j x_j (\bmod \prod_{i = 1}^{k} m_i)\) 。
显然在 \([0, \prod m_i - 1]\) 由唯一解 \(X_0\) 。
\(\square\)
CRT 的另一个构造性证明同时给出了 CRT 的算法。但CRT 在解同余方程组时不具有普适性,于是 CRT 的算法不需要掌握。
1.6.1 CRT 的意义
CRT 的意义在于描述同余方程的解是否存在。
启发式推论:
解同余方程
可以转化为解
其中 \(m = \prod p_i^{e_i}\) ,即 \(m\) 的唯一分解。
证明:
考虑顺序合并方程组,前两个有 \(X = a + t_1 \cdot p_1^{e_1} = a + t_2 \cdot p_2^{e_2}\) ,不难得到 \(X = a + t \cdot lcm(p_1^{e_1}, p_2^{e_2})\) 。
继续合并有 \(X = a + t \cdot m\) ,于是方程组等价于 \(X \equiv a (\bmod m)\) 。
qed
这个启发式推论有一些常见典例。
1.6.2 EXCRT
对于方程
若 \(gcd(b, d) \mid (c - a)\) 则,由裴蜀定理上述方程组有解,且可以通过 EXCRT 合并为
EXCRT 的合并计算如下:
首先有
于是
只需解 \(x\) ,于是只需解
令 \(g = gcd(b, d),\ b^{'} = b / g,\ d^{'} = d / g,\ l = \frac{c - a}{g}\) 。由裴蜀定理若 \(l \not \in N\) 则无解。
于是只需解
此时可以通过 exgcd 解 \(b^{'} x + d^{'} y = 1\) 得到最小非负解 \(x^{'}_0\) 。于是求得原式的最小非负解为 \(x_0 = x^{'}_0 \times (l \bmod d^{'} / 1) \bmod d^{'} / 1\) 。
此时解集为 \(x = x_0 + t \cdot d^{'} / 1\) ,于是有
整理成同余方程为
时间复杂度瓶颈由 exgcd 贡献,复杂度为 \(\log M\) (\(M\) 为值域)。
于是合并 \(n\) 个同余方程的时间复杂度为 \(n \log M\) 。
二 线性逆元
2.2.1 由带余整除法线性递推逆元
当保证 \(i \bmod m\) 有逆元。
在模 \(m\) 意义下,可以构造出 \(i^{-1}\) 可以被 \((m \bmod i)^{-1}\) 递推,只需从 \(m\) 除以 \(i\) 的带余整除法角度进行构造。
观察模 \(m\) 意义下, \(m\) 除以 \(i\) 的带余整除法:
显然 \(m \bmod i \in [0, i - 1]\) 于是有递推式
初始化最小元 \(1^{-1} = 1\) 。
2.2.2 由阶乘线性处理逆元
上述两种做法作用相同,可以 \(O(n)\) 预处理出逆元然后 \(O(1)\) 使用。
三 欧拉定理
欧拉定理:若 \(gcd(a, b) = 1\) ,则 \(a^{\phi(b)} \equiv 1 (\mod b)\) 。
特殊的,若 \(gcd(a, b) = 1, b \in \mathop{Prime}\) ,则 \(a^{b - 1} \equiv 1 (\mod b)\) 。这也叫费马小定理。
3.1 欧拉函数
代表 \(\leq n\) 中与 \(n\) 互质的数的个数。
显然朴素计算时间复杂度为 \(O(n \log n)\) ,这并不是欧拉函数最终的公式。
欧拉函数
$p1 < p2 < p3 \cdots $ 为 \(n\) 的所有质因子。
证明:
\(gcd(x, n) = 1\) 可以看作 \(x\) 和 \(n\) 互相没有对方的因子,于是 \(\leq n\) 中与 \(n\) 互质的数的个数即可看作 \(\leq n\) 中不被 \(n\) 的质因子整除的数的个数。
由一个逆向思维,被 \(n\) 的质因子整除的数的个数显然更好求。即求 \(n\) 减去 \(1 \sim n\) 中被 \(n\) 的质因子整除的数的个数。
由容斥原理
\(\square\)
注意到若求
的式子只能直接容斥,因为不保证 \(n = m\) ,不能套用二项式定理。
\(\varphi(n)\) 的时间复杂度与 \(n\) 的质因子有关,显然单次计算的时间复杂度为 \(O(\sqrt{n})\) 。
、同时 \(\varphi(n)\) 可以被线性预处理并 \(O(1)\) 调用。
3.1.1 欧拉函数的计算
欧拉函数的计算与求逆元无关,但在此可以顺带说明。
3.1.1.1 单次欧拉函数计算
唯一分解定理:\(n \geq 2\ \in N_+\) 可以唯一分解为 \(p_1^{\alpha_1}p_2^{\alpha_2} \cdots p_m^{\alpha_m}\) ,\(p_1 < p_2 < \cdots < p_m\) 。\(p_i\) 是 \(n\) 的质因子,\(\alpha_i \geq 1\) 。
证明: 一个有趣的反证是,如果唯一分解定理不成立,那么存在一个 \(n\) 即被某个质数整除又不被它整除。\(\square\)
定理: \(n\) 的质因子最多只有一个因子 \(\sqrt{n}\) 。
证明:
存在性:构造性证明,\(\exists n\) 具有 \(> \sqrt{n}\) 的质因子。
选择 \(\forall p, q \in \mathop{P} \ s.t.\ p < q\) ,显然有 \(q > \sqrt{p \times p}\) 。
正确性: \(\forall n\) 中 \(> \sqrt{n}\) 的质因子数量 \(\leq 1\) 。
显然 \(\nexists n\) 有两个质因子 \(> \sqrt{n}\) ,否则 \(n > \sqrt{n}^2\) 。
\(\square\)
定理:任意 \(n = p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_m^{\alpha_m}\) ,由上述定理有\(p_{m} \leq \sqrt{n}\) 或 \(p_{m} > \sqrt{n}\ \wedge \alpha_{m} = 1\) 。
这个定理可递推,于是有 推论:\(n' = p_2^{\alpha_2} p_3^{\alpha_3} \cdots p_m^{\alpha_m}\) ,有 \(p_m \leq \sqrt{n'}\) 或 \(p_{m} > \sqrt{n'} \wedge \alpha_{m} = 1\) 。 显然这个推论是可逆的,即定理和推论是充分必要的。
根据上述推论,可以得到一个更强的结论:
对 \(n = p_1^{\alpha_1} p_2^{\alpha_2} \cdots p_m^{\alpha_m}\) 。
-
若 \(\alpha_m > 1\) ,\(\alpha_m \leq \sqrt{n}\) ,这是显然的。
-
若 \(\alpha_m = 1\) ,\(\alpha_m > \sqrt{n}\) 。
证明:
如果 \(n\) 是质数,显然 \(p_m > \sqrt{p_m}\) 。
如果 \(n\) 不是质数,则 \(n\) 可以由 \(p_m\) 逆推得到,于是 \(p_m > \sqrt{n}\) 。
qed
于是可以得到质因子分解算法:
枚举 \(2 \sim \sqrt{n}\) ,当枚举到一个 \(n\) 的因子 \(x\) ,由唯一分解定理 \(x\) 是 \(n\) 的质因子,让 \(n\) 除尽 \(x\) 的幂次得到 \(n'\) 。递推地枚举 \(x + 1 \sim n'\) ,便可得到质因子 \(p_1, p_2, \cdots, p_{m - 1}\) 。
最后有 \(n' = p_m^{\alpha_{m}}\) 。
若 \(\alpha_{m} > 1\) ,有 \(p_m \leq \sqrt{n'} = \sqrt{p_m^{\alpha_m}}\) ,于是 \(p_m\) 可以被得到。
若 \(\alpha_{m} = 1\) ,有 \(p_m > \sqrt{n'} = \sqrt{p_m}\) ,算法会被中断。
于是最后判断若 \(n' > 1\) ,则 \(n' = p_m\) ,此时 \(n'\) 需要加入质因子集。
在 \(n\) 的质因子分解过程中计算 \(\varphi(n)\) 即可。
时间复杂度:
复杂度不太好证明,显然比严格 \(\sqrt{n}\) 快不少。当 \(n\) 为素数,瓶颈是严格 \(\sqrt{n}\) ,不妨断言它与 \(\sqrt{n}\) 同阶。于是复杂度是 \(O(\sqrt{n})\) 的。
优化:
质因子分解算法,通常能提前筛出 \(\leq n\) 的质数,由质数定理,质因子分解算法将加速到 \(O(\sqrt{\frac{n}{\ln n}})\) 。
存在优化更好的质因子分解算法,但并不能达到线性。
3.1.1.2 线性筛欧拉函数
不难证明欧拉函数是一个完全积性函数。
证明:
当 \(a = 1,\ \varphi(a) = 1\) 。
当 \(gcd(a, b) = 1\) ,显然 \(a, b\) 没有公共质因子,于是 \(\varphi(a \times b) = \varphi(a) \times \varphi(b)\) 。
\(\square\)
在线性筛欧拉函数的过程中。
定义 \(p[x]\) 为 \(x\) 的最小质数。
初始化 \(\varphi(1) = 1\) 。
若遍历到 \(i\) 为质数,有 \(\varphi(i) = i - 1\) 。
利用质数 \(i\) 筛去以 \(i\) 为最小质数的合数,不妨定义 \(i\) 为 \(p_1\) 即最小质数:
若 \(p[j] < p_1\) ,显然 \(j\) 的最小质因子比 \(p_1\) 大,于是 \(gcd(j, p_1) = 1\) 。于是有
若 \(p[j] = p_1\) ,显然 \(j\) 的最小质因子是 \(p_1\) ,于是 \(p_1 \times j\) 的质因子集合和 \(j\) 的质因子集合相同,于是有:
3.2 欧拉定理证明
证明:
前提为 \(gcd(a, b) = 1\) ,在 \(\bmod b\) 意义下考虑。
已经证明了欧拉函数的正确性,于是假设 \(x_1, x_2, \cdots, x_{\phi(b)}\) 为 \(\leq b\) 中与 \(b\) 互质的 \(\phi(b)\) 个数。
观察另外 \(\phi(b)\) 个数 \(a \cdot x_1, a \cdot x_2, \cdots , a \cdot x_{\phi{b}}\) ,得到两个性质。
-
\(\forall i\) 有 \(gcd(a \cdot x_i \bmod b, b) = 1\) 。
证明 因为 \(a\) 和 \(x_i\) 都与 \(b\) 互质,即都没有 \(b\) 的因子,于是它 \(a \cdot x_i\) 也不会有 \(b\) 的因子,于是 \(gcd(a \cdot x_i, b) = 1\) ,于是 \(gcd(a \cdot x_i \bmod b, b) = 1\) 。\(\square\) -
\(\forall i, j\) 有 \(a \cdot x_i \not \equiv a \cdot x_j\) 。
证明: 考虑反证,假设 \(\exists i,j\) 有 \(a \cdot x_i \equiv a \cdot x_j\) ,则有 \(x_i \equiv x_j (\bmod \frac{b}{gcd(a, b)} = b)\) ,显然矛盾。\(\square\)
由 \(1, 2\) 可以证明 \(a \cdot x_1, a \cdot x_2, \cdots, a \cdot x_{\phi(b)}\) 在 \(\bmod b\) 意义下是 \(x_1, x_2, \cdots, x_{\phi(b)}\) 的一个排列。
于是
\(\square\)
3.3 欧拉定理得到逆元
若 \(gcd(a, b) = 1\) ,根据欧拉定理有
离散数学中的 \(a^{-1}\) 即 \(a\) 的逆元。
通常题目保证 \(b\) 为 \(p\) 。于是保证了 \(a \in [0, p - 1]\) 一定有 \(gcd(a, b) = 1\) 。
于是有 \(a^{b - 2} \equiv a^{-1} (\bmod b) \ s.t.\ b \in \mathop{Prim}\) 。基于欧拉定理,便可使用快速幂得到逆元。
根据裴蜀定理也保证了 \(ax \equiv 1 (\bmod b)\) 一定有解。
3.4线性逆元和直接逆元的应用场景
线性逆元和直接求逆元各给出了两种方法。
线性逆元可以 \(O(n)\) 预处理出 \(1 \sim n\) 的逆元后以 \(O(1)\) 调用,直接逆元可以以 \(O(\log n)\) 求得。在 \(n\) 对时间复杂度的贡献不同时有不同选择。