数学基础

最大公约数

素数与互素

模运算与同余

abmodn
可以理解为 a%n == b%n

逆元 (inverse)

拓展欧几里得

拓展欧几里得可以用来求乘法逆元,下面是一个例子:

例如求 13*x ≡ 1 (mod 35)
35 = 2*13+ 9
13 = 1*9 + 4
9  = 2*4 + 1

1 = 9-(2*4) 
  = (35 - 2*13) - (2*(13-1*9))
  = 35 - 2*13 - 2*(13-1*(35-2*13))
  = 35 - 2*13 - 2*13 + 2*(35-2*13)
  = 3*35 - 8*13
所以 (-8)*13 ≡ 1 (mod 35)
又因为 -8 ≡ 27 (mod 35)
所以 13*27 ≡ 1 (mod 35)
13在模35的情况下,乘法逆元为27

裴蜀定理 gcd(x,y) = ax + by

根据欧几里得算法

x = x0;
y = y0;
while(y){
	int q = y/x;
	int r = y%x;
	y = x;
	x = r;
}

证明,在每一轮循环中,都有

xi=ai1x0+bi1y0yi=ai2x0+bi2y0

使用数学归纳法

  1. i = 1 时,x=x0y=y0,即 ai1=1,bi1=0,ai2=0,bi2=1
  2. i >= 1 时,若 i 满足上述条件,则
    • yi+1=xi=ai1x0+bi1y0a(i+1)2=ai1,b(i+1)2=bi1
    • xi+1=yi%xi=(ai2x0+bi2y)k(ai1x0+bi1y0)=(ai2kai1)x0+(bi2kbi1)y0a(i+1)1=ai2kai1b(i+1)1=bi2kbi1

Q.E.D

中国剩余定理

m1,m2,m3,...,mr 两两互素,则以下同余方程组
xaimodmi, i=1,2,3,...,r
M=m1m2m3...mr 的唯一解为
x=i=1raiMi(Mi1 mod mi)modM,其中 Mi=M/mi
(1)先证明 x 为同余方程的解
因为 Mi0modmj(ij),所以 xajmodmj
(2)再证明 x 是唯一解
假设上述同余方程组有两个解 0x1,x2<M

x1aimodmix2aimodmix1x20modmi

又因为 m1,m2,m3,...,mr 两两互素,所以 x1=kM+x2,与假设矛盾
Q.E.D

Euler 准则

对于整数 x 和奇素数 p,x 是模 p 的平方剩余(y2xmodp) 的充要条件是 x(p1)/21modp

证明:
(1)必要性
因为 gcd(x,p)=1, y2xmodp
所以 gcd(y,p)=1
根据费马小定理,yp11modp
所以 x(p1)/21modp
(2)充分性
不妨设 xZp,因为 Zp={1,2,3,...,p-1} 在模 p 乘法下是循环群,所以一定存在 Zp 的一个生成元 b,使得 xbimodp
因为 x(p1)/21modp
所以 bi(p1)/2=(bp1)i/21modp
又因为 bp11modp,所以 i 为偶数
所以 x 模 p 的平方根必有整数解,其值为 ±bi/2
Q.E.D