数论(一)
1.同余系统
1.1 最大公约数(Greatest common divisor)
1.1.1 表示x和y的最大公约数,也叫最大公因数,例如
欧几里得对“公约”的解释,给定两条长度不同的线段 a 和 b ,如果能够找到第三条线段 c ,它既可以度量 a ,又可以度量 b ,我们就说 a 和 b 是可公约的(commensurable),最大可能的c就是a和b的最大公约数
1.1.2 如果两个数的最大公约数是1,那么这两个数成是互质的(relatively prime),比如说
互质的几何意义,如果 a 和 b 互质,这就意味着分数 a / b 已经不能再约分了,意味着 a × b 的棋盘的对角线不会经过中间的任何交叉点,意味着循环长度分别为 a 和 b 的两个周期性事件一同上演,则新的循环长度最短为 a × b 。

1.1.3 最大公约数一般使用欧几里得碾压相除法(Euclidean algorithm)计算
欧几里得算法使用了如下递归式

1.2 最小公倍数(Least Common Multiple)
1.3 模运算
1.3.1 是 除以 的余数,例如
1.3.2 模运算符合交换律,结合律和分配律
1.3.3 如何计算
如果
如果
1.4 同余等式
如果
2.中国剩余定理
2.1 孙子算经中的问题
“今有物,不知其数。三、三数之,剩二;五、五数之,剩三;七、七数之,剩二。问物几何?答曰:二十三。”
《孙子算经》卷下第二十六问
2.2 数学解释
有
2.3 直觉
两个除数的情况为例,假设两个除数分别是 4 和 7。下表显示的就是各自然数除以 4 和除以 7 的余数情况
0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | |
0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | |
6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 | 1 | 2 | 3 | 4 |
可以看出,
2.4 数学表达
已知
那么
其中
2.5 举例,孙子算经中的问题
3.欧拉定理
3.1 欧拉函数
任意给定正整数
如果
如果
如果
比如
3.2 欧拉定理
如果
3.2.1
3.2.2
3.2.3
由于
3.3 模反元素(逆元)
如果
3.3.1
用欧拉定理证明
3.3.2
例如求解同余方程
3.4 费马小定理
根据欧拉定理,当
4.扩展碾压相除法
4.1 裴蜀定理
对于方程
4.2 算法实现
对于方程
所以
用递归算法实现
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;
}