乘法逆元

一 乘法逆元

线性同余方程 \(ax \equiv 1 (\bmod b)\) 有解,则 \(x\)\(a \bmod b\) 的乘法逆元。

于是利用扩展欧几里得算法 \(exgcd\) 解线性同余方程即可得到 \(a \bmod b\) 的乘法逆元。

1.1 “1” 的逆元

\[1 \cdot 1^{-1} \equiv 1 (\bmod m)\ s.t.\ m > 1 \]

显然 \(\forall m > 1\)\(1 \bmod m\) 的逆元为 \(1\)

1.2 逆元的运算法则

不难证明三个运算

\[\begin{aligned} a^{-1} \cdot a &\equiv 1 \\ a^{-1} \cdot b^{-1} &\equiv b^{-1} \cdot a^{-1} \\ a^{-1} \cdot b^{-1} &\equiv (ab)^{-1} \\ \end{aligned} \]

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 整除的性质
  1. 传递性:若 \(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\)

  2. \(a \mid b \Leftrightarrow a \mid -b\)
    证明:\(\exists q\)\(aq = b\) ,则 \(\exists q' = -q\)\(aq' = b\)\(\square\)

  3. \(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\)

  4. \(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\)

  5. \(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\)

  6. \(a \mid b\) ,则 \(|a| \leq |b|\)
    证明:\(a q = b\) ,则 \(\exists l > 0\)\(|a| l = |b|\) ,则 \(|a| \leq |b|\)\(\square\)

  7. \(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\)

  8. \(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\)

  9. \(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\)

  10. \(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 取整相关
  1. 定义:\(\lfloor x \rfloor \leq x < \lfloor x \rfloor + 1\)\(\lfloor x \rfloor\) 称作 \(\leq x\) 的最大整数。
  2. 定义:\(\lceil x \rceil - 1 < x \leq \lceil x \rceil\)\(\lceil x \rceil\) 称作 \(\geq x\) 的最大整数。
  3. 定义\(\{x\} = x - \lfloor x \rfloor\)\(\{x\}\) 称作 \(x\) 的分数部分。
  4. \(\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\)
  5. \(\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\)
    注:可以提取整数,但显然不能提取正负号。
  6. \(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\)
  7. \(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 :注意放缩过程中若存在浮点数比较,大于、小于号不能朝大于等于、小于等于号方向放缩。
  8. \(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\)
  9. \(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\)
  10. \(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\) 时使用上取整。
  11. \(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\)
  12. \(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 同余的性质

  1. 自反性:\(a\) 同余于 \(a\)\(m\)
    证明: 显然 \(m \mid (a - a)\) ,则 \(a \equiv a (\bmod m)\)\(\square\)

  2. 对称性:若 \(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\)

  3. 传递性:若 \(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\)

  4. 线性运算:若 \(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\)

  5. \(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\)

  6. \(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 \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}\) ,构造有

\[\begin{aligned} a_1 x + b_1 y &= 1 \\ \lfloor \frac{a_1}{b_1} \rfloor b_1 x + (a_1 \bmod b_1) x + b_1 y &= 1 \\ b_1 (\lfloor \frac{a_1}{b_1} \rfloor x + y) + (a_1 \bmod b_1) x &= 1 \end{aligned} \]

再令 \(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\)

  1. \(\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\)
  2. \(\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(a_1, a_2, a_3, \cdots, a_k) = p_1^{min\{e_{1_1}, e_{1_2}, e_{1_3}, \cdots, e_{1_m}\}} p_2^{e_{min\{e_{2_1}, e_{2_2}, e_{2_3}, \cdots, e_{2_m}\}}} p_3^{min\{e_{3_1}, e_{3_2}, e_{3_3}, \cdots, e_{3_m}\}} \cdots p_k^{min\{e_{k_1}, e_{k_2}, e_{k_3}, \cdots, e_{k_m}\}} \]

推论: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(a_1, a_2, a_3, \cdots, a_k) = p_1^{max\{e_{1_1}, e_{1_2}, e_{1_3}, \cdots, e_{1_m}\}} p_2^{e_{max\{e_{2_1}, e_{2_2}, e_{2_3}, \cdots, e_{2_m}\}}} p_3^{max\{e_{3_1}, e_{3_2}, e_{3_3}, \cdots, e_{3_m}\}} \cdots p_k^{max\{e_{k_1}, e_{k_2}, e_{k_3}, \cdots, e_{k_m}\}} \]

推论:lcm 的本质是质因子的并集。
性质 2 (乘法意义的唯一分解定理)

\[a_1 \cdot a_2 \cdot a_3 \cdot \cdots \cdot a_k = p_1^{\sum e_{1_i}} p_2^{\sum e_{2_i}} p_3^{\sum e_{3_i}} \cdots p_k^{\sum e_{k_i}} \]

性质 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 模意义下的运算法则

模意义下运算法则定义:

  1. \((a + b) \bmod m = (a \bmod m + b \bmod m) \bmod m\)

  2. \((a \cdot b) \bmod m = (a \bmod m \cdot (b \bmod m)) \bmod m\)

  3. \(\frac{a}{b} \bmod m = a \cdot b^{-1} \bmod m\)

1.5.2.2 模意义下的线性函数

\(m\) 意义下的形如

\[f(x) = ax + b \]

数论函数,比较常见。

数论函数即定义域在整数上的函数,离散数学中的函数基本都是数论函数。

解的取值 \(f(x) \in [0, m - 1]\) ,令 \(f(x) \textbf{的集合为} S\)

  1. \(|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\) 的区间(如果不越界),解集一样。

  2. \(\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\)

  3. \(ax + b (\bmod m) \Rightarrow ((a \bmod m)x + (b \bmod gcd(a, m))) (\bmod m)\)
    证明:

    1. 根据模意义下的运算法则显然可以有 \(ax + b \equiv (a \bmod m)x + (b \bmod m)\)
    2. 已知解的差值为 \(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\)

  1. \(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)\)
  2. \(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 算法用来求解方程

\[ax + by = g \]

由裴蜀定理,这种方程有解。

\(a_1 = \frac{a}{g},\ b_1 = \frac{b}{g}\)

执行过程中我们常求解

\[a_1 x + b_1 y = 1 \]

此时可以用裴蜀定理证明中的方法,构造性求解得到一组 \(x, y\)

并且在递归终止时会选取 \(x = 1, y = 0\)

利用 exgcd 得到的解最多经过一次调整可得到方程的最小非负解 \(x_0\)

时间复杂度分析的形式与 gcd 的分析完全相同,即时间复杂度为 \(O(\log max{a, b})\)

1.5.4.2 exgcd 算法的通解

\(gcd(a, b) = g\)

对于

\[ax + by = 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\) 的通解为

\[\begin{cases} x = x_0 + t \frac{b}{g} \\ y = y_0 - t \frac{a}{g} \\ \end{cases} \]

1.5.4.3 exgcd 算法的值域分析

对于 \(ax + by = g\) ,利用 \(exgcd\) 求解过程中,结束层之前的所有 \(x, y\) 满足 \(|x| \leq b,\ |y| \leq a\)

证明:

观察

\[\begin{aligned} ax + by &= g \\ a_1 x_1 + b_1 y_1 &= g \\ \end{aligned} \]

显然过程中 \(a, b \geq 0\) ,于是作为前提。

  1. \(a = 1, b = 0\)
    此时递归为结束层,我们会定义 \(x = 1, y = 0\)

  2. \(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\)

  3. \(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\) ,有

\[\begin{aligned} |y| &= |x_1 - \lfloor \frac{a}{b} \rfloor y_1| \\ \textbf{由绝对值不等式} \\ &\leq |x_1| + |\lfloor \frac{a}{b} \rfloor y_1| \\ &\leq b_1 + \lfloor \frac{a}{b} \rfloor |y_1| \\ &= a \bmod b + \lfloor \frac{a}{b} \rfloor |y_1| \\ &= a - \lfloor \frac{a}{b} \rfloor b + \lfloor \frac{a}{b} \rfloor |y_1| \\ &= a - \lfloor \frac{a}{b} \rfloor (b - |y_1|) \\ &\leq a \end{aligned} \]

然后可以向上归纳。

\(1, 2, 3\) ,所有递归层都满足条件。

推论:由 exgcd 的通解与值域分析, exgcd 解出的解是一定最小但不一定非负的。

#绝对值不等式

\[\begin{aligned} ||a| - |b|| \leq |a + b| \leq |a| + |b| \\ ||a| - |b|| \leq |a - b| \leq |a| + |b| \\ \end{aligned} \]

证明:
通过几何向量的概念有
左边:两边之差小于第三边
右边:两边之和大于第三边
\(\square\)

1.5.4.4 用 exgcd 解决非平凡问题

ecgcd 真正在使用时往往解的是非平凡方程

\[ax + by = d \]

由裴蜀定理若 \(g \mid d\) 有解。

\(a_1 = \frac{a}{g},\ b = \frac{b}{g},\ d_1 = \frac{d}{g}\) ,等于解方程

\[a_1 x + b_1 y = d_1 \]

可以通过 \(exgcd\) 解出

\[a_1 x + b_1 y = 1 \]

的最小非负解 \(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\)

更明确地,两个未知数可以直接算出一个,另一个间接算出。

即有

\[\begin{cases} x = (x_0 \cdot d_1) \bmod b_1 + t \cdot b_1 \\ y = (d_1 - a_1 \cdot x_1) / b_1 \\ \end{cases} \]

\[\begin{cases} y = (y_0 \cdot d_1) \bmod a_1 + t \cdot a_1 \\ x = (d_1 - b_1 \cdot y_1) / a_1 \\ \end{cases} \]

在解同余方程时通常只关系一维情况,于是不关心 \(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

对于一类方程组

\[\begin{cases} X \equiv a_1 (\bmod m_1) \\ X \equiv a_2 (\bmod m_2) \\ X \equiv a_3 (\bmod m_3) \\ \cdots \\ X \equiv a_k (\bmod m_k) \\ \end{cases} \]

\(\forall i, m_i\) 两两互质,则 \(X\)\([0, \prod m_i - 1]\) 有唯一解。

证明:
解的存在性:
若两个方程有解,则由 EXCRT 可合并为一个方程。于是最终所有方程可合并,即方程组有解。

于是只需证两个方程有解。

\(gcd(m, n) = 1\) 且方程组。

\[\begin{cases} X \equiv a (\bmod m) \\ X \equiv b (\bmod n) \\ \end{cases} \]

有解。

\(\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 的意义在于描述同余方程的解是否存在。

启发式推论:

解同余方程

\[X \equiv a (\bmod m) \]

可以转化为解

\[\begin{cases} X \equiv a (\bmod p_1^{e_1}) \\ X \equiv a (\bmod p_2^{e_2}) \\ \cdots \\ X \equiv a (\bmod p_k^{e_k}) \\ \end{cases} \]

其中 \(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

对于方程

\[\begin{cases} X \equiv a (\bmod b) \\ X \equiv c (\bmod d) \\ \end{cases} \]

\(gcd(b, d) \mid (c - a)\) 则,由裴蜀定理上述方程组有解,且可以通过 EXCRT 合并为

\[X \equiv a^{'} (\bmod b^{'}) \]

EXCRT 的合并计算如下:

首先有

\[X = a + x \cdot b = c + y \cdot d \]

于是

\[bx - dy = c - a \]

只需解 \(x\) ,于是只需解

\[bx + dy = c - a \]

\(g = gcd(b, d),\ b^{'} = b / g,\ d^{'} = d / g,\ l = \frac{c - a}{g}\) 。由裴蜀定理若 \(l \not \in N\) 则无解。
于是只需解

\[b^{'} x + d^{'} y = l \]

此时可以通过 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\) ,于是有

\[\begin{aligned} X &= a + b \cdot x \\ &= a + b \cdot (x_0 + t \cdot d^{'}) \\ &= a + b \cdot x_0 + t \cdot b \cdot d / g \\ &= a + b \cdot x_0 + t \cdot lcm(b, d) \end{aligned} \]

整理成同余方程为

\[X \equiv a + b \cdot x_0 (\bmod lcm(b, d)) \]

时间复杂度瓶颈由 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\) 的带余整除法:

\[\begin{aligned} &m \equiv \lfloor \frac{m}{i} \rfloor * i + (m \bmod i) \\ &0 \equiv \lfloor \frac{m}{i} \rfloor * i + (m \bmod i) \\ &\textbf{两边乘以} i^{-1} \times (m \bmod i)^{-1} \\ &0 \equiv \lfloor \frac{m}{i} \rfloor * (m \bmod i)^{-1} + i^{-1} \\ &i^{-1} \equiv - \lfloor \frac{m}{i} \rfloor * (m \bmod i)^{-1} \\ \end{aligned} \]

显然 \(m \bmod i \in [0, i - 1]\) 于是有递推式

\[i^{-1} = (m - \lfloor \frac{m}{i} \rfloor) \cdot (m \bmod 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 欧拉函数

\[\phi(n) = \sum_{i = 1}^{n} [gcd(i, n) = 1] \]

代表 \(\leq n\) 中与 \(n\) 互质的数的个数。

显然朴素计算时间复杂度为 \(O(n \log n)\) ,这并不是欧拉函数最终的公式。

欧拉函数

\[\phi(n) = n \prod (1 - \frac{1}{p_i}) \]

$p1 < p2 < p3 \cdots $ 为 \(n\) 的所有质因子。

证明:
\(gcd(x, n) = 1\) 可以看作 \(x\)\(n\) 互相没有对方的因子,于是 \(\leq n\) 中与 \(n\) 互质的数的个数即可看作 \(\leq n\) 中不被 \(n\) 的质因子整除的数的个数。

由一个逆向思维,被 \(n\) 的质因子整除的数的个数显然更好求。即求 \(n\) 减去 \(1 \sim n\) 中被 \(n\) 的质因子整除的数的个数。

由容斥原理

\[\begin{aligned} \sum_{i = 1}^{n} [gcd(i, n) = 1] &=n - (\sum \frac{n}{p_i} - \sum \frac{n}{p_ip_j} + \sum \frac{n}{p_i p_j p_k} - \sum \frac{n}{p_i p_j p_k p_l} + \cdots) \\ &= n(1 - \sum \frac{1}{p_i} + \sum \frac{1}{p_ip_j} - \sum \frac{1}{p_i p_j p_k} + \sum \frac{1}{p_i p_j p_k p_l} + \cdots) \\ \textbf{由二项式定理逆用} \\ &= n \prod (1 - \frac{1}{p_i}) \\ \end{aligned} \]

\(\square\)

注意到若求

\[f(n, m) = \sum_{i = 1}^{m} [gcd(i, n) = 1] \]

的式子只能直接容斥,因为不保证 \(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}\)

  1. \(\alpha_m > 1\)\(\alpha_m \leq \sqrt{n}\) ,这是显然的。

  2. \(\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\) 。于是有

\[\varphi(p_i \times j) = (p_1 - 1) \times \varphi(j) \]

\(p[j] = p_1\) ,显然 \(j\) 的最小质因子是 \(p_1\) ,于是 \(p_1 \times j\) 的质因子集合和 \(j\) 的质因子集合相同,于是有:

\[\begin{aligned} \varphi(p_1 \times j) &= p_1 \times j \prod (1 - \frac{1}{p_k}) \\ &= p_1 \times (j \times \prod (1 - \frac{1}{p_k})) \\ &= p_1 \times \varphi(j) \end{aligned} \]

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}}\) ,得到两个性质。

  1. \(\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\)

  2. \(\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)}\) 的一个排列。
于是

\[\begin{aligned} a^{\varphi(b)} \prod_{i = 1}^{\varphi(b)} x_i \equiv \prod_{i = 1}^{\varphi(b)} x_i \\ a^{\varphi(b)} \equiv 1 (\bmod b) \end{aligned} \]

\(\square\)

3.3 欧拉定理得到逆元

\(gcd(a, b) = 1\) ,根据欧拉定理有

\[\begin{aligned} &a^{\varphi(b)} \equiv 1 (\bmod b) \\ &a^{\varphi(b) - 1} \equiv a^{-1} (\bmod b) \\ \end{aligned} \]

离散数学中的 \(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\) 对时间复杂度的贡献不同时有不同选择。

posted @ 2024-02-18 00:00  zsxuan  阅读(18)  评论(0编辑  收藏  举报