前置小定理
定理1 gcd(a,b)=gcd(a−b,b)(a≥b)
证1:
设
gcd(a,b)=d,则
a=k1d,
b=k2d(k1、k2互质)
a−b=(k1−k2)d
因为未知
(k1−k2) 与
k2 是否互质,因此
gcd(a−b,b)≥d
证2
设
gcd(a−b,b)=t ,则
(a−b)=k3t,
b=k4t
a=(a−b)+b=k3t+k4t=(k3+k4)t
同理未知
(k3+k4) 与
k4 是否互质,因此
gcd(a,b)≥t
证3
综合证1证2,
gcd(a−b,b)≥gcd(a,b) gcd(a,b)≥gcd(a−b,b)
gcd(a−b,b)=gcd(a,b)
定理2 gcd(a,b)=gcd(a%b,b)(a≥b)
设
a=kb+r ,即证
gcd(a,b)=gcd(r,b)
证1:
设
gcd(a,b)=d ,则
a=k1d ,
b=k2d(k1、k2互质)
r=k1d−kk2d=d(k1−kk2)
因为未知
(k1−kk2) 与
k2 是否互质,因此
gcd(r,b)≥d
证2
设
gcd(r,b)=t ,则
r=k3t ,
b=k4t
a=kb+r=kk4t+k3t=(kk4+k3)t
同理未知
(k3+kk4) 与
k4 是否互质,因此
gcd(a,b)≥t
证3
综合证1证2,
gcd(r,b)≥gcd(a,b) gcd(a,b)≥gcd(r,b)
gcd(a mod b,b)=gcd(a,b)
裴蜀定理
内容: 有不定方程
ax+by=c(c>0) ,
a,b 为不全为0的整数。若其有整数解,则
gcd(a,b)∣c ,
c 的最小取值为
gcd(a,b).
证明:
设
ax+by 的最小值为
d , 设此时的解为
x0,y0
ax0+by0=d
设
a=dq+r(0≤r<d)
r=a−dq=a−(ax0+by0)q=a(1−x0q)+b(−y0q)
若
r>0 , 则说明存在
x=(1−x0q),y=(−y0q) ,且
r<d ,说明
ax+by 的最小值应为
r 而非
d ,矛盾。
则
r=0 ,即
d∣a 同理可得
d∣b
现已知
d 是
a,b 的公约数,设
c 是
a,b 的任意公约数,易知
c∣ax0 与 c∣by0
c∣(ax0+by0) −> c∣d
所以
d 是
a,b 的最大公约数
重要推论
a,b 互质的充要条件是存在整数
x,y ,使
ax+by=1
通解构造
{x=x0+b/d∗ky=y0−a/d∗k
费马小定理
前置定理1
ac≡bc(modm) 且
gcd(c,m)=1 ,则
a≡b(modm)
证明
ac−bc≡0(modm)
c(a−b)≡0(modm)
c,m互质
a−b≡0(modm)
a≡b(modm)
前置定理2
若
gcd(a,m)=1 ,则{
0,a,2a,3a,...,(m−1)a} 是模
m 的完全剩余系。
证明
假设存在
pa≡qa(modm)(p≡q(modm))
(q−p)a≡0(modm)
a,m 互质
q−p≡0(modm)
q≡p(modm)
矛盾,证毕
费马小定理内容:
ap−1≡1(modp)(p为质数且p∤a)
证明
模
p 的余数集合是
[1,p−1] 的排列,因此
a×2a×3a×...(p−1)a≡∏i=1p−1i(modp)
ap−1(p−1)!≡(p−1)!(modp)
(p−1)! 与
p 互质
ap−1≡1(modp)
逆元
ap−1≡1(modp)
a×ap−2≡1(modp)
a,ap−2 互为模
p 下的逆元
唯一性证明
exgcd
考虑辗转相除法
ax+by=gcd(a,b)
bx1+(a mod b)y1=gcd(b,a mod b)
......
gcd(a,b)xn+0yn=gcd(gcd(a,b),0)
显然
x=1,y=0 是最后一个式子的一组解
考虑回溯,设
a=bq+r(0≤r<b)(q=⌊a/b⌋) ,有
ax+by=gcd(a,b)(上层)
bx0+ry0=gcd(b,r)(下层)
联立
ax+by=bx0+ry0
可推
r=a−bq
ax+by=bx0+(a−bq)y0
ax+by=ay0+b(x0−qy0)
故
x=y0,y=x0−qy0
实现
CPPint exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;
return a;
}
int x1,y1;
int k=exgcd(b,a%b,x1,y1);
x=y1,y=x1-a/b*y1;
return k;
}
求逆元
若
a 与
p 互质,根据裴蜀定理,存在
ax+py=1 ,即
ax≡1(modp)
求出
[0,p) 之间的
x 即可。
exgcd 可求出
p 不为质数的情况。
线性递推逆元

注意,最终求出来是负数,要用模数加上转为正数
CPPfor (int i = 2; i <= n; i++){
inv[i]=(p-(p/i)*inv[p%i])%p;
}
中国剩余定理
内容: 给定一组两两互质的正整数
m1..mn,以及任意正整数
a1...an,求一个正整数
x,满足
⎩⎨⎧x≡a1(modm1)x≡a2(modm2)…x≡an(modmn)
中国剩余定理指出在模
M=∏i=1nmi 下有唯一解
x≡∑i=1nai×Mi×yi(modM)
- 其中 Mi=M/mi
- yi 是 Mi 模 mi 的逆元
证明:
易知
gcd(Mi,mi)=1 ,由裴蜀定理:
Miyi≡1(modm)
其中
yi 为
Mi 在模
m 下的逆元
再定义:
x=∑j=1najMjyj
我们要验证
x≡ai(modmi)
- i=j 时,显然该项模 mi 为 ai (MiYi≡1(modmi))
- i=j 时,Mj 有因子 mi 因此该项模 mi 为 0
相加起来正确性显然。
唯一性证明:
命题:若
x,x′ 均为方程组的解,则
x≡x′(modM)
假设存在两个解
x≡ai(modmi) x′≡ai(modmi)
x−x′≡0(modmi) 即 mi∣x−x′
因为
mi 两两互质
M∣x−x′−>x−x′≡0(modM)−>x≡x′(modM)
扩展中国剩余定理
去除了
mi 互质的条件,具体实现通过合并两个方程为一个新方程,逐步减少方程数量,最终得到解。
合并
{x≡a1(modm1)x≡a2(modm2)
等价于
x=k1m1+a1=k2m2+a2(k1,k2∈Z)
k1m1−k2m2=a2−a1
可看成线性丢番图方程(
ax+by=c;x=k1,y=k2)
若方程有解,需满足
gcd(m1,m2)∣(a2−a1)
剩余在左右同时除以
gcd 后使用
exgcd

卢卡斯定理
内容: 设
p 为质数,
n 和
k 的
p 进制展开为:
n=∑i=0mnipi k=∑i=0mkipi
则:
(nk)≡∏i=0m(niki)(modp)
也可写成:
(nk)≡(⌊n/p⌋⌊k/p⌋)(n mod pk mod p)(modp)
前置小定理
(1+x)qp≡(1+xp)q(modp)
证明: 根据费马小定理
xp≡x(modp)
因此对于多项式
f(x)=1+x ,有:
f(x)p≡1+x≡1+x×xp−1≡1+xp(modp)
两边同时取
q 次方
f(x)pq=f(x)pq≡(1+xp)q(modp)
证毕
卢卡斯定理证明:
若
n<p且k<p,此时
n=n0,k=k0定理退化为
(nk)≡(n0k0)(modp)
显然成立
若对于所有
n′<n,即对于
n′=⌊n/p⌋,k′=⌊k/p⌋,有
(⌊n/p⌋⌊k/p⌋)≡∏i=1m(niki)(modp)
我们需要证明其对
n 成立,设
n=qp+r,k=sp+t(q=⌊n/p⌋,r=n mod p,s=⌊k/p⌋,r=k mod p)
引入刚刚的定理
(1+x)n=(1+x)qp+r=(1+x)qp(1+x)r≡(1+xp)q(1+x)r(modp)
比较两边
xk 的系数
- 左边系数为(nk)
- 右边(1+xp)q(1+x)r 中,xk=xsp+t 的系数为
(qs)(rt)
这是因为
- (1+xp)q 贡献 xsp 的系数 (qs) (二项式定理)
- (1+x)r 贡献 xt 的系数(rt)
则
(nk)≡(qs)(rt)(modp)
根据假设
(qs)≡∏i=1m(niki)(modp)
易知
(rt)=(n0k0)
所以
(nk)≡∏i=0m(niki)(modp)