数论基础定理与简单应用

(目前排版有些乱,后续我把内容写完的时候会重排一遍)

基本符号

  • \(\equiv\) ,可以表示恒等同余
  • \(a \mid b\) ,表示 \(b\)\(a\) 的倍数。注意不是 \(a\)\(b\) 的倍数
  • \(a \nmid b\) ,表示 \(b\) 不是 \(a\) 的倍数,与整除相反
  • \(\in\) ,属于,用于表示一个元素在一个集合当中
  • \(\sum\) ,求和
  • \([n = 1]\) ,艾弗森括号,即当 \(n = 1\) 时,结果为 1,否则为 0
  • \(!\) ,阶乘
  • \(\cap\) ,表示集合之间取交集
  • \(\cup\) ,表示集合之间取并集
  • \(\left \lfloor \,\right \rfloor\) ,表示向下取整

裴蜀定理

内容

  • 对于任意整数 \(a, b\) ,设 \(d = gcd(a, b)\)存在一组整数 \((x, y)\) 满足 \(ax + by = d\) , 且对于任意一组整数 \((x, y)\) 都有 \(ax + by \mid d\)

费马小定理

内容

  • 对于任意素数(质数) \(p\) , 都有任意整数 \(a\) 满足 \(a ^ p \equiv p (mod \quad p)\) ;当满足 \(p \nmid a\) 时也可以写成 \(a^{p - 1} \equiv 1 (mod \quad p)\)

    对于第二个公式的前置条件 \(p \nmid a\) 你也许并未在代码或题解中见过或强调过,因为对于 OI 里的大部分题目 \(p\) 总大于 \(a\) ,所以基本不会出现 \(p \nmid a\) 的情况,但这并不代表改条件是可以忽视的

证明

前置知识:二项式定理,组合数

显然,当 \(a = 0\)\(a^p \equiv p\) 成立(后文省略了\((mod \quad p)\)

使用数学归纳法,要证明 \(a \in N\) 时成立,仅需证明 \((a + 1) ^ p \equiv a + 1\) 成立即可

  • 二项式定理展开

\[(a + 1)^{p} = a ^ p + C^1_{p}a^{p - 1} + C^2_{p}a^{p - 2} + ... + C^{p - 1}_{p}a + 1 \]

  • 进一步展开组合数

\[(a + 1) ^ p = a ^ p + \frac{p!}{1!(p - 1)!}a^{p - 1} + \frac{p!}{2!(p - 2)!}a^{p - 2} + ... + \frac{p!}{(p - 1)!(1)!}a^{p - 1} + 1 \]

  • 由于组合数的性质,分子一定能整除分母,又因为 \(p\) 是素数且不存在有组合数的分母中含 \(p\) ,所以组合数的结果因数中一定含 \(p\)

    而在模 \(p\) 意义下,这些组合数就会变成 0,所以可以进一步化简

\[(a + 1) ^ p = a ^ p + 1 = a + 1 \]

  • 故,得证

因此对于任意的 \(a \in N\) 都满足 \(a ^ p \equiv a\)


扩展欧几里得定理

  • 扩展欧几里得定理(exgcd)本质是对裴蜀定理的求解

    即给定整数 \(a, b\) ,求一组整数 \(x, y\) 满足 \(ax + by = gcd(a, b)\)

前置知识:欧几里得定理(辗转相除)

实现过程

  • 根据欧几里得定理 \(gcd(a,b)=gcd(b,a \; mod \; b)\) 可得

\[bx_1+(a\; mod\; b)y_1=gcd(a,b) \]

  • 又因为 $a ; mod ; b = a - \left \lfloor \frac{a}{b} \right \rfloor \times b $ , 所以

\[bx_1+(a - \left \lfloor \frac{a}{b} \right \rfloor \times b)y_1=gcd(a,b) \]

  • 展开整理

\[ay_1 + b(x_ 1 - \left \lfloor \frac{a}{b} \right \rfloor y_1) = gcd(a, b) \]

  • 所以得到

\[x = y_1, y = x_ 1 - \left \lfloor \frac{a}{b} \right \rfloor y_1 \]

然后不断递归即可


模逆元

定义

  • 对于任意非零实数 \(a\)乘法逆元定义为 \(a^{-1}\)
  • 模逆元定义为在模意义下的乘法逆元,即对于任意非零实数 \(a\) ,满足 \(ax \equiv 1\)\(x\) 即为 \(a\) 的模逆元

请注意区分模逆元与乘法逆元,乘法逆元包含模逆元

应用

模逆元在OI最常用的即是对含有除法的式子进行取模运算

例如对于式子 \(a \times b \;/ \;c\) ,假设 \(a, b, c\) 都很大,那么我们在运算过程中就需要不断取模,但对于除法而言,我们显然不能直接对除数取模,所以我们要将除法替换

我们知道 \(b\; / \; c\) 可以看为 \(b \times c^{-1}\) ,而 \(c^{-1}\) 的逆元为 \(c\) ,我们只需要再求出 \(c\) 的逆元 \(x\) ,就可以用 \(x\) 代替 \(c^{-1}\) 进行计算。

因为在模 \(p\) 意义下 \(c^{-1}c \equiv 1\)\(cx \equiv 1\) ,所以 \(c^{-1} \equiv x\)

求解

对于任意非零实数 \(a\)

  • 若模数 \(p\) 为素数,根据费马小定理可得 \(a^{p - 1} \equiv 1\) ,所以\(a \times a^{p - 2} \equiv 1\)

    所以 \(a\) 的模逆元即为 \(a^{p - 2}\) ,然后用快速幂即可求出

  • \(p\) 为非素数,我们可以将式子 \(ax \equiv 1 \; (mod \; p)\) 转化为 \(ax + bp = 1\) ,随后用扩展欧几里得定理即可求出 \(x\)


中国剩余定理

中国剩余定理 (CRT) 可认为是求解如下一种一元线性同元方程组的工具

\[\left\{\begin{matrix} x \equiv a_1 \; (mod \; n_1) \\ x \equiv a_2 \; (mod \; n_2) \\ ...\\ x \equiv a_k \; (mod \; n_k) \\ \end{matrix}\right. \]

公式

  • \(x = \sum_{1}^{k}a_im_im_i^{-1}\) (保证在模 \(M\) 意义下有唯一解)

其中 \(M = a_1 \times a_2 \times...\times a_k\)\(m_i = \frac{M}{n_i}\)\(m_i^{-1}\)\(m_i\) 在模 \(n_i\) 意义下的逆元

证明

将公式展开可得

\[x = a_1m_1m_1^{-1} + a_2m_2m_2^{-1} + ... + a_km_km_k^{-1} \]

注意到当对于对于任意的 \(i\) ,因为 \(m_i = \frac{M}{n_i} = \frac{n_1n_2...n_k}{n_i}\) ,所以对于其他的 \(j \ne i\)\(m_i\) 一定包含因数 \(n_i\) ,所以在模 \(n_i\) 意义下时,除了第 \(i\) 项外其余项均为 \(0\) ,所以此时 \(x \equiv a_im_im_i^{-1}\) ,又因为 \(m_im_i^{-1} = 1\) ,所以 \(x \equiv a_i \;(mod\;n_i)\) ,所以得证


埃氏筛

埃氏筛是一种常见的素数筛法

实现过程及原理

我们要在 \(1...n\) 种找到所有质数,可以通过排除所有合数来解决

对于任意合数,其一定含有质因数因子

所以我们可以根据以筛出来的质数去不断提升倍数去排除其它合数

时间复杂度为 \(O(n \,logn\,logn)\)

示例代码

vector<int> prime;
bool vis[N];

void is_prime(int n) {
  vis[0] = vis[1] = false;
  for (int i = 2; i <= n; i++)vis[i] = true;
  for (int i = 2; i <= n; i++) {
    if (vis[i]) {
      prime.push_back(i);
      if (i * i > n) continue;
      for (int j = i * i; j <= n; j += i)
        vis[j] = false;
    }
  }
}

容斥原理

容斥原理主要解决多个集合取并后的结果

比如现在有两个集合 \(A,B\) ,其并集长度 \(|A\cup B| = |A| + |B| - |A \cap B|\) ,这是显然的

若有三个集合 \(A,B,C\) ,则 $|A \cup B \cup C| = |A| + |B| + |C| - |A\cap B| - |A\cap C| - |B\cap C| + |A \cap B \cap C| $

我们注意到,对于单个集合的贡献是正的,任意两个集合的交的贡献是负的,以此类推

则我们可以得到对于 \(n\) 个集合的公式

\[\bigcup_{i = 1}^{n}A_i = \sum_{i = 1}^{n}A_i - \sum_{i < j}^{n}|A_i \cap A_j| + \sum_{i<j<k}^{n}|A_i \cap A_j\cap A_k| - ... \]

我们对于公式进行化简,得

\[\bigcup_{i = 1}^{n}A_i = \sum_{\phi \ne S \subseteq \left \{ 1, 2, 3...n\right \}}(-1)^{|S| + 1} \left| \bigcap_{i \in S}A_i\right | \]


迪利克雷卷积

迪利克雷卷积是一种定义在数论函数中的一种二元运算

定义为 \((f * g)(n) = \sum_{d | n}f(d)g(\frac{n}{d})\)

其中 \((f*g)\) 即为新函数

性质

  • 满足交换律,即 $f * g = g * f $
  • 满足结合律,即 \(f * g * h = f * (g * h)\)
  • 满足分配律,即 \(f * (g + h) = f * g + f * h\)
  • 存在单位元 \(\varepsilon = [n = 1]\) 使得任意数论函数 \(f\) 满足 \(f * \varepsilon = f\)

积性函数

积性函数是一种数论函数,定义为若 \(f\) 为积性函数,则满足 \(f(ab) = f(a)f(b)\) ,其中 \(a, b\) 互质

\(a, b\) 不互质,则称 \(f\)完全积性函数

(后文中的若无说明,都认为积性函数不是完全积性函数)

常见例子

  • 欧拉函数 \(\varphi\) 为积性函数

    • 要证明 $\varphi(ab) = \varphi(a)\varphi(b) $

      其中 \(gcd(a, b) = 1\)\(gcd(x, ab) = 1\) 等价于 \(gcd(x, a) = 1, gcd(x, b) = 1\)

      即一个数若与 \(ab\) 互质,则其必须与 \(a, b\) 分别互质

      根据中国剩余定理\(x \; mod \; ab\)\((x \; mod \; a,x\; mod \; b)\) 一一对应

      又因为 \(mod \; a\) 下余数有 \(\varphi(a)\) 个, \(mod \; b\) 下余数有 \(\varphi(b)\)

      \(\varphi(ab) = \varphi(a)\varphi(b)\)

      (这里只有大致证明过程,详情可见欧拉函数 - 维基百科

  • 莫比乌斯函数 \(\mu\) 为积性函数

    • 证明在下文种

莫比乌斯函数

定义莫比乌斯函数为

\[\mu(n) = \left\{ \begin{array}{l} 1 \qquad\quad n = 1\\ 0 \qquad\quad n含有平方因子\\ (-1)^k \quad n含有k个质因数 \end{array} \right. \]

性质

  • 莫比乌斯函数是一种积性函数

    • 要证明 \(\mu(ab) = \mu(a)\mu(b)\), 其中 \(gcd(a, b) = 1\)

      \(a\) 存在平方因子时,即 \(p^2 | a\)

      \(p^2 | ab\) ,所以 \(\mu(ab) = 0\)\(\mu(a) = 1\)

      \(\mu(ab) = \mu(a)\mu(b) = 0\)

      \(a\) 不存在平方因子时

      \(a = p_1p_2p_3...p_n\)\(b = q_1q_2q_3...q_m\)\(p, q\) 均为质数)

      由于 \(gcd(a, b) = 1\), 所以 \(ab = p_1q_1p_2q_2p_3q_3...p_nq_m\)

      所以 \(\mu(ab) = (-1) ^ {nm}\) ,又因为 \(\mu(a) = (-1) ^ n\)\(\mu(b) = (-1)^m\)

      所以 \(\mu(ab) = \mu(a)\mu(b)\)

      故,得证

  • \(\sum_{d | n}\mu(d) = [n = 1]\) (这是莫比乌斯函数极为重要的性质,也是莫比乌斯反演的关键)

    • \(n = p_1^{b_1}p_2^{b_2}...p_k^{b_k}\qquad(n>1)\)

      由于当 \(n\) 含有平凡因子时 \(\mu\) 为0,所以只有当 \(b_i \in {0, 1}\) 才会产生贡献

      假设选择了 \(r\) 个质因子,则 \(\sum_{d | n}\mu(d) = \sum_{r = 0}^{k}C_k^r(-1)^r\)

      由二项式定理可得 \(\sum_{r = 0}^{k}C_k^r(-1)^r = (1-1)^k = 0\)

      而当 \(n = 1\) 时,\(\mu(1) = 1\)

      故,得证


莫比乌斯反演

对于下面这种函数

\[F(n) = \sum_{d | n}f(d) \]

其莫比乌斯反转公式为

\[f(n) = \sum_{d | n}\mu(d)F(\frac{n}{d}) \]

证明

对于 \(f(n)\) ,我们显然有

\[f(n) = \sum_{d | n}[\frac{n}{d} = 1]f(d) \]

即只有当 \(d = n\) 时 为 \(f(n)\) ,即 \(f(n) = f(n)\)

对于 \([\frac{n}{d} = 1]\) ,我们利用莫比乌斯函数的性质将其变形带入得

\[f(n) = \sum_{d | n}\sum_{m | \frac{n}{d}}\mu(m)f(d) \]

注意到 \(m | \frac{n}{d} = md | n\), 所以对于 \(\sum_{d | n}\sum_{m | \frac{n}{d}}\) ,我们可以化为

\[f(n) = \sum_{md | n}\mu(m)f(d) \]

此时,我们将这个求和拆开,我们固定 \(d\) ,枚举 \(m\) ,转化为

\[f(n) = \sum_{d | n}\mu(d)\sum_{m | \frac{n}{d}}f(m) \]

注意到 \(F(\frac{n}{d}) = \sum_{m | \frac{n}{d}}f(m)\), 所以得到

\[f(n) = \sum_{d | n}\mu(d)F(\frac{n}{d}) \]

故,得证


欧拉定理

内容

  • 对于任意的 \(a\) ,满足 \(gcd(a, p) = 1\) 的,则都满足 \(a^{\varphi(p)} \equiv 1 \quad(mod \; p)\)

欧拉函数 \(\varphi\) 在前文中的积性函数常见例子中有简单讲解,具体可见欧拉函数_百度百科

其也可以看作是对于费马小定理的扩展,即将费马小定理的条件 \(p\) 为质数扩展到了 \(a, p\) 互质,

证明

设在 \(1\) ~ \(p\) 中与 \(p\) 互质的数为

\[x_1,x_2,x_3...x_{\varphi(p)} \]

将其都乘 \(a\)

\[ax_1,ax_2,ax_3...ax_{\varphi(p)} \]

由于 \(gcd(x_i, p) = 1\)\(gcd(a,p) = 1\) ,所以易得 \(gcd(ax_i, p) = 1\)

又由于在模 \(p\) 意义下 \(x_i\) 互不相同,所以 \(ax_i\) 在模 \(p\) 意义下也互不相同

由于 \(gcd(ax_i,p) = 1\)\(ax_i\) 互不相同,所以我们可以得到

\[\left \{ax_1 \; mod \; p,ax_2\; mod \; p,ax_3\; mod \; p...ax_\varphi(p) \; mod \; p\right \} = \left \{x_1,x_2,x_3...x_{\varphi(p)}\right \} \]

此时我们对两个集合求积得

\[a^{\varphi(p)}x_1x_2x_3...x_{\varphi(p)} = x_1x_2x_3...x_{\varphi(p)} \qquad (mod \;p) \]

两边同时约掉 \(x_1x_2x_3...x_{\varphi(p)}\)

\[a^{\varphi(p)} = 1\qquad(mod \; p) \]

故,得证

posted @ 2026-07-29 17:06  Accepted_wyr  阅读(127)  评论(0)    收藏  举报