Files
thejinchao.github.io/docs/note/math/number_theory_1.md
T
2025-02-22 22:42:02 +08:00

213 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数论(一)
---
## 1.同余系统
### 1.1 最大公约数([Greatest common divisor](https://en.wikipedia.org/wiki/Greatest_common_divisor))
#### 1.1.1 $\gcd(x,y)$表示x和y的最大公约数,也叫最大公因数,例如$\gcd(6,15)=3$
欧几里得对“公约”的解释,给定两条长度不同的线段 a 和 b ,如果能够找到第三条线段 c ,它既可以度量 a ,又可以度量 b ,我们就说 a 和 b 是可公约的\(commensurable\),最大可能的c就是a和b的最大公约数
#### 1.1.2 如果两个数的最大公约数是1,那么这两个数成是互质的\(relatively prime\),比如说$\gcd(7,10)=1$
互质的几何意义,如果 a 和 b 互质,这就意味着分数 a / b 已经不能再约分了,意味着 a × b 的棋盘的对角线不会经过中间的任何交叉点,意味着循环长度分别为 a 和 b 的两个周期性事件一同上演,则新的循环长度最短为 a × b 。
![](./math_relatively_prime.png)
#### 1.1.3 最大公约数一般使用欧几里得碾压相除法\([Euclidean algorithm](https://en.wikipedia.org/wiki/Euclidean_algorithm)\)计算
欧几里得算法使用了如下递归式
$$
\gcd(n,m)=\gcd(m, n\bmod m)
$$
$\gcd(69,21)=3$的计算方法
$\gcd(69,21)=\gcd(21,6)=\gcd(6,3)=3$
![](./math_euclid.png)
### 1.2 最小公倍数([Least Common Multiple](https://en.wikipedia.org/wiki/Least_common_multiple))
$lcm(x,y)$表示x和y的最小公倍数,例如$lcm(45,30)=90$
$$
\gcd(x,y)\times lcm(x,y)=xy
$$
### 1.3 模运算
#### 1.3.1 $x\bmod{n}$ 是$x$除以$n$的余数,例如$13\bmod{5}=3$
#### 1.3.2 模运算符合交换律,结合律和分配律
$$
\begin{split} (a+b)\bmod n &=((a\bmod n)+(b\bmod n))\bmod n \\
(a-b)\bmod n &=((a\bmod n)-(b\bmod n))\bmod n \\
(a\times b)\bmod n &=((a\bmod n)\times(b\bmod n))\bmod n \\
(a\times (b+c))\bmod n &=(((a\times b)\bmod n)+((a\times c)\bmod n))\bmod n \end{split}
$$
#### 1.3.3 如何计算$a^x\bmod n$
如果$x$是2的幂次方,例如16,那么 $a^{16}\bmod n=(((a^2\bmod n)^2\bmod n)^2\bmod n)^2\bmod n$
如果$x$不是2的幂次方,例如$a^{25}\bmod n$
$25=16+8+1=(2+1)\times2\times2\times2+1$
$a^{25}=a^{(2+1)\times2\times2\times2+1}=(((a^2\times a)^2)^2)^2\times a$
$a^{25}\bmod n=(((((((a^2\bmod n)\times a)\bmod n)^2\bmod n)^2\bmod n)^2\bmod n)\times a)\bmod n$
### 1.4 同余等式
如果$a$和$b$除$n$的余数相同,那么记为$a\equiv b\pmod n$
如果$a\equiv b\pmod n$,那么$b\equiv a\pmod n$
如果$a\equiv b\pmod n, b\equiv c\pmod n$,那么记为$a\equiv b\equiv a\pmod n$
如果$a_1\equiv b_1\pmod{m}, a_2\equiv b_2\pmod{m}, \ldots, a_n\equiv b_n\pmod{m}$,那么
$$
\begin{split} a_1+a_2+\ldots+a_n &\equiv (b_1+b_2+\ldots+b_n)\pmod{m} \\ a_1a_2\ldots a_n &\equiv (b_1 b_2\ldots b_n)\pmod{m}\end{split}
$$
## 2.中国剩余定理
### 2.1 孙子算经中的问题
> “今有物,不知其数。三、三数之,剩二;五、五数之,剩三;七、七数之,剩二。问物几何?答曰:二十三。”
> 《孙子算经》卷下第二十六问
### 2.2 数学解释
有$m$个两两互质的数,其乘积为$P$,有一个未知数$M$,如果我们已知$M$分别除以这$m$个数所得的余数,那么在0到$P – 1$的范围内,我们可以唯一地确定这个$M$
### 2.3 直觉
两个除数的情况为例,假设两个除数分别是 4 和 7。下表显示的就是各自然数除以 4 和除以 7 的余数情况
|$i$|$0$|$1$|$2$|$3$|$4$|$5$|$6$|$7$|$8$|$9$|$10$|$11$|$12$|$13$|$14$|$15$|$16$|$17$|$18$|$19$|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|$i\bmod 4$|0|1|2|3|0|1|2|3|0|1|2|3|0|1|2|3|0|1|2|3|
|$i\bmod 7$|0|1|2|3|4|5|6|0|1|2|3|4|5|6|0|1|2|3|4|5|
|$i$|$20$|$21$|$22$|$23$|$24$|$25$|$26$|$27$|$28$|$29$|$30$|$31$|$32$|$33$|$34$|$35$|$36$|$37$|$38$|$39$|
|$i\bmod 4$|0|1|2|3|0|1|2|3|0|1|2|3|0|1|2|3|0|1|2|3|
|$i\bmod 7$|6|0|1|2|3|4|5|6|0|1|2|3|4|5|6|0|1|2|3|4|
可以看出,$i\bmod 4, i\bmod 7$的结果以$4×7 = 28$长度循环,每种特性的组合都在这28个结果中出现,所以一旦确定$i \bmod 4$和$i \bmod 7$的余数,就一定能唯一判定出$i$
### 2.4 数学表达
已知$m_1,m_2,\ldots,m_k$是两两互质的正整数,有未知数$x$满足同余方程组
$$
x\equiv a_1\pmod{m_1} \\
x\equiv a_2\pmod{m_2} \\
\cdots \\
x\equiv a_k\pmod{m_k} \\
$$
那么
$$
x=(a_1M_1M_1^{-1}+a_2M_2M_2^{-1}+\ldots+a_kM_kM_k^{-1})\bmod {M}
$$
其中$M=m_1\cdot m_2\cdot\ldots\cdot m_k, M_i=M/m_i$, 而$M_i^{-1}$是$M_i$的逆元(见3.3节),也就是$M_iM_i^{-1}\equiv 1\pmod{m_i}$
### 2.5 举例,孙子算经中的问题
$m_1=3,m_2=5,m_3=7,a_1=2,a_2=3,a_3=2$,那么
$$\begin{split}
M&=3\times5\times7=105\\
M_1&=5\times7=35\\
M_2&=3\times7=21\\
M_3&=3\times5=15\\
M_1^{-1}&=35^{\phi(3)-1}\bmod{2}=2 \\
M_2^{-1}&=21^{\phi(5)-1}\bmod{5}=1 \\
M_3^{-1}&=15^{\phi(7)-1}\bmod{7}=1 \\
x&=(2\times35\times2+3\times21\times1+2\times15\times1)\bmod 105=23
\end{split}
$$
## 3.欧拉定理
### 3.1 欧拉函数
任意给定正整数$n$,小于等于$n$的正整数之中,与n构成互质关系的数的个数记为$\phi(n)$
$$\phi(1)=1$$
如果$p$是质数,那么$\phi(p)=p-1$, $\phi(p^k)=p^k-p^{k-1}$
如果$n=pq, \phi(n)=\phi(p)\phi(q)=(p-1)(q-1)$
如果$n=p_1^{k1}p_2^{k2}\ldots p_r^{kr}$,那么
$$
\phi(n)=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})\ldots(1-\frac{1}{p_r})
$$
比如$\phi(1323)=\phi(3^3\times 7^2)=1323(1-\frac{1}{3})(1-\frac{1}{7})=756$
### 3.2 欧拉定理
如果$a$和$n$互质,那么
$$
a^{\phi(n)}\equiv1\pmod n
$$
#### 3.2.1
$\phi(10)=4$,$7^{\phi(10)}\equiv7^4\equiv2401\equiv1\pmod {10}$
#### 3.2.2
$7^{4k}\equiv(7^4)^k\equiv\underbrace{7^4\times 7^4\times\ldots\times7^4}_{\text k}\equiv\underbrace{1\times 1\times\ldots\times1}_{\text k}\pmod n$,所以$7^{4k}$尾数一定是1
#### 3.2.3
由于$7^{4k}\equiv1\pmod {10}, 7^{2}\equiv9\pmod {10}$, 所以$7^{222}\equiv 7^{4\times55+2}\equiv(\underbrace{1\times 1\times\ldots\times 1}_{55}\times 9)\pmod{10}$,所以$7^{222}$尾数为9
### 3.3 模反元素(逆元)
如果$a$和$n$互质,那么$ax\equiv 1\pmod n$有解,$x$称为$a$模$n$的模反元素
#### 3.3.1
用欧拉定理证明$a^{\phi(n)}\equiv a\times a^{\phi(n)-1}\equiv1\pmod {n}$,所以$a^{\phi(n)-1}+kn$都是a的模反元素
#### 3.3.2
例如求解同余方程$3x\equiv1\pmod{11}$,那么$3^{\phi(11)-1}\equiv3^9\equiv19683\equiv4\pmod{11}$,所以$4+11k$都是同余方程的解
### 3.4 费马小定理
根据欧拉定理,当$p$是一个质数时,对于任意正整数$a$,有$a^p\equiv a\pmod{p}$,如果$p\nmid a$,那么
$$
a^{p-1}\equiv1\pmod{p}
$$
## 4.扩展碾压相除法
### 4.1 裴蜀定理
对于方程$ax+by=d$,当且仅当$\gcd(a,b)\mid{d}$时,方程有整数解
### 4.2 算法实现
对于方程$ax+by=\gcd(a,b)$, 假设方程$bx+(a\bmod b)y=\gcd(a,a\bmod b)$有整数解$(x',y')$,由于$\gcd(a,b)=\gcd(b,a\bmod b)$,可以得到
$$
ax+by=bx'+(a\bmod b)y'=ay'+b(x'-\lfloor\frac{a}{b}\rfloor y')
$$
所以
$$
x=y', y=x'-\lfloor\frac{a}{b}\rfloor y'
$$
用递归算法实现
```cpp :no-line-numbers
pair<int,int> exgcd(int a,int b){
if(b == 0)return make_pair(1,0);
pair<int,int>temp = exgcd(b,a%b);
pair<int,int>ans = make_pair(temp.second,temp.first-(int)(a/b)*temp.second);
return ans;
}
```