裴蜀定理
设 a,b 是不全为 0 的整数,则
- 对任意整数 x,y,成立 gcd(x,y)∣ax+by;
- 存在整数 x,y,成立 gcd(x,y)=ax+by。
可推广到多个数。
逆定理:设 a,b 是不全为 0 的整数,若 d>0 是 a,b 的公因数,且存在 x,y 使得 ax+by=d,则 d=gcd(a,b)。可用来判断互质。
费马小定理
对于任意质数 p 和整数 a,有 ap≡amodp。证明可以通过拉格朗日定理得到。
欧拉定理
若 gcd(a,m)=1,则 aφ(m)≡1modm。
设 (x1,⋯,xφ(m)) 为整数模 m 剩余系的一组代表元。则 m∤(xi−xj),同理 m∤a(xi−xj),所以 (ax1,⋯,axφ(m)) 也是整数模 m 剩余系的一组代表元。
故 ax1ax2⋯axφ(m)≡x1x2⋯xφ(m)modm。
扩展欧拉定理
ab≡⎩⎨⎧abmodφ(m),ab,a(bmodφ(m))+φ(m),gcd(a,m)=1,gcd(a,m)=1,b<φ(m),gcd(a,m)=1,b≥φ(m).(modm)
Exgcd
问题:求 ax+by=gcd(a,b) 的一组可行解。
考虑递归过程:{ax1+by1=gcd(a,b)bx2+(amodb)y2=gcd(b,amodb),则一组解为 {x1=y2y1=x2−⌊ba⌋y2。
对于任意的不定方程 ax+by=c,根据裴蜀定理,有解的条件是 gcd(a,b)∣c。可以先用 Exgcd 求解,然后乘上倍数。
线性同余方程
问题:求解 ax≡bmodn 的所有解。
有解的条件是 gcd(a,n)∣b。
先用 Exgcd 求出 ax0+nk0=gcd(a,n),然后就有原方程的一组解 agcd(a,n)bx0+ngcd(a,n)bk0=b。
任意解为 x=gcd(a,n)bx0+gcd(a,n)nk。
最小正整数解可以用负数 mod 转正数的公式来算:x=(x0modt+t)modt,其中 t=gcd(a,n)n。
中国剩余定理
用来解同余方程组 ⎩⎨⎧xxx≡a1modn1≡a2modn2⋮≡akmodnk,其中 ni 两两互质。
过程:
- n:=∏ni
- 对于第 i 个方程:
- mi:=nin
- 计算 mi−1modni
- ci:=mimi−1,不取模
- 模 n 意义下唯一解为 x=∑iaicimodn。
可以用来解决模数不是质数的一些问题:先对模数进行质因数分解,分别关于这些质因子取模计算答案,然后用 CRT 合并。
扩展 CRT
用来解决模数不互质的情况。设两个方程是 x≡a1modm1 和 x≡a2modm2,其中 m1 和 m2 不一定互质。转化为 x=m1p+a1=m2q+a2,则 m1p−m2q=a2−a1。
由裴蜀定理,当 gcd(m1,m2)∤(a2−a1) 时无解。否则通过 Exgcd 解出一组 (p,q),则原方程组的解为 x≡m1p+a1modlcm(m1,m2)。