提高组数论速查

同余与剩余系#

设有整数 n1,n2,m 满足 q1,q2,rZ,n1=mq1+r,n2=mq2+r,则称 n1,n2m 同余,记作 n1n2(modm)

称所有模 m 同余(设为 r)的 n 组成的集合为模 m 的一个剩余类,记作 Cr

设有 m 个整数构成的集合 A 满足 a1,,amm 互不同余(即从每个剩余类中各取一个数),则称 A 为模 m 的一个完全剩余系。

容易证明一个满足上面条件的集合至多有 m 个数。

我们可以再化简一下,只取与 m 互质的数,这样就得到了模 m 的一个简化剩余系。简化剩余系的大小为 φ(m)

欧几里得算法与裴蜀定理#

欧几里得算法(辗转相除法):gcd(a,b)=gcd(b,amodb)(a,bZ)

证:设 a=qb+r,gcd(b,r)=d

由于 gcd(b,amodb)=gcd(b,r),则有 d|r,d|b,则可以推出 d|a,则有 d|gcd(a,b)

k=gcd(a,b),则 k|aqb=r,说明 k|gcd(b,r)

因此,gcd(a,b)|gcd(b,amodb),gcd(b,amodb)|gcd(a,b)gcd(a,b)=gcd(b,amodb)

裴蜀定理:若有 a,b,mZa,b 不全为 0),则存在一组解 x,yZ 使得 ax+by=m 的充要条件是 gcd(a,b)|m,且若有解则必有无穷多组解。

证(拓展欧几里得算法):

必要性显然,下证充分性:

不妨假设 a,b0,因为正负号的不同可以简单地通过 x,y 的正负性来改变。

同时,只要证明 ax+by=gcd(a,b) 即可,因为对 x,y 扩大若干倍即可得到 m

那么两边同时除以 gcd(a,b),即 ax+by=1

我们在求 gcd(a,b) 的时候是怎么做的?后几步单独拿出来看(不妨设此时的两个求公约数的数分别为 u,v):

gcd(a,b)=gcd(u,v)=gcd(v,1)=gcd(1,0)=1

发现出现了一个 u=qv+1,移项得到 uqv=1。那么现在就得到了一组对于 u,v 的解。

能不能从 u,v 推到 a,b 呢?答案是可以的。

假设我们上一级求的是 gcd(λu+v,u)=gcd(u,v),已知 ux0+vy0=1,要求 (λu+v)x1+uy1 的解。

构造:取 x1=y0,y1=x0λy0,得到

(λu+v)x1+uy1=(λu+v)y0+u(x0λy0)=λuy0+vy0+ux0λuy0=ux0+vy0=1

逐层推上去即可,这样不仅证明了该定理,还求出了一组解。

有了特解后,其通解为小学奥数内容,这里不再赘述。

int exgcd(int a, int b, int &x, int &y, int z = 1) {
    if (!b) {
        if (z % a) x = 0, y = 0;
        else x = z / a, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, x, y, z);
    int xx = y, yy = x - y * (a / b);
    x = xx, y = yy;
    return d;
}

利用数学归纳法也容易将裴蜀定理推广到 n 个数的情况:

aixi=m 有整数解当且仅当 gcd(a1,a2,,an)|m

证:

  1. n=2 时显然成立。

  2. 假设 2nk 时成立,下证 n=k+1 时成立。

    因为 k 时成立,因此 i=1kaixi=λgcd(a1,,ak)

    原式变为 λgcd(a1,,ak)+ak+1xk+1=m 有解,由 n=2 时知有解当且仅当 gcd(gcd(a1,,ak),ak+1)=gcd(a1,,ak+1)|m

证毕。

欧拉定理与费马小定理#

欧拉定理(数论):若 gcd(a,m)=1,则 aφ(m)1(modm)

证:

设模 m 的一个简化剩余系为 r1,,rφ(m),则由简化剩余系的性质 ar1,,arφ(m) 同样为模 m 的简化剩余系。

那么就有

raraφ(m)r(modm)aφ(m)1(modm)

m 为一个质数 p 时,就得到了费马小定理。

费马小定理: apa(modp)p 是质数。

具体到 OI 上,可以总结出一个 拓展欧拉定理 ,用来处理模意义下的指数:

ab{abmodφ(m)gcd(a,m)=1;abgcd(a,m)1,b<φ(m);abmodφ(m)+φ(m)gcd(a,m)1,bφ(m).(modm)

仅证第三条:

我们对 m 分解质因数,设为 p1α1pkαk。考虑对每一个 pα 分别证明:若每一个都成立,那么这几个互质的模数乘起来必然成立。

  1. gcd(a,pα)=1 时:

    abaφ(m)bφ(m)+bmodφ(m)[aφ(m)]bφ(m)abmodφ(m)(modpα)

    注意到 φ 是积性函数,因此 φ(pα)|φ(m)
    所以

    ababmodφ(m)abmodφ(m)+φ(m)(modpα)

  2. gcd(a,pα)1 时:

    因为 p 是质数,所以 p|a。又由前提有 bφ(m),因此 bφ(m)φ(pα)=pαpα1=pα1(p1)α

    那么有

    ababmodφ(m)+φ(m)0(modpα)

最终合并即可。

或者参考 OI Wiki 上的证法:欧拉定理 & 费马小定理 - OI Wiki

乘法逆元#

是否可以将模拓展到有理数域上呢?答案是可以的。

考虑下面一个问题:

设有正整数 a,m,求满足 ab1(modm) 的解 b

我们称 bam 意义下的乘法逆元,记作 a1(modm)(或者说环 Zm 上的乘法逆元)。

其实就是相当于求解 axmy=1x

由裴蜀定理,当 gcd(a,m)>1 时无解,即不存在逆元。

否则就可以用拓展欧几里得求出 x

从另一个角度想,如果存在逆元,由欧拉定理,有

aφ(m)1(modm)aφ(m)1a1(modm)baφ(m)1(modm)

快速幂即可求出。

如果要求 n 个数的逆元呢?

求前 n 个数的那个做法多少有点麻烦,个人更喜欢这种:

考虑求任意 n 个数的逆元,先随便给个顺序,然后求个前缀积 s1,,sn

之后利用上述方法求 sn 的逆元。

紧接着倒序一个一个乘回去,sn1an=sn11,这样线性求出了每个前缀积的逆元。

之后再顺序乘过去,sn1sn1=an1

时间复杂度 O(n),相比直接线性扫的多了点常数,但是好想。

这里也直接给出传统做法:

inv[1] = 1;
for (int i = 2; i <= n; i++) {
    inv[i] = (p - p / i) * inv[p % i] % p;
}

中国剩余定理#

求解同余方程 xai(modmi),其中 mi,mj 两两互质。

M=m,Mi=Mmi,再求出 Mi 在模 mi 意义下的乘法逆元 Mi1 则该同余方程模 M 下的唯一解为

xi=1naiMiMi1(modM)

证:

先证存在性:

首先由于 m 两两互质,因此 Mi=Mmimi 互质,因此必定存在逆元 Mi1

而在 modmi 意义下 MiMi11(modmi),因此 aiMiMi1ai(modmi)

又因为 mj|Mi,ij,所以 aiMiMi10(modmj)

唯一性利用数学归纳法不难证明。

如果模数不两两互质呢?这个时候就要使用拓展中国剩余定理

考虑取出其中一对不互质的方程,假设为

{xa(modm)xb(modn)

其中 gcd(m,n)>1。考虑写成等式的形式:

{x=λm+ax=μn+bλmμn=ba

即求一个不定方程的解,使用裴蜀定理即可判定是否有解,并求出一组特解。

然后将两个方程合并:

x=λm+aλ=λ0+kngcd(m,n)x=m(λ0+kngcd(m,n))+a=mλ0+klcm(m,n)+axmλ0+a(modlcm(m,n))

其中 kZλ0 是通过 exgcd 求出的通解。

两两合并方程组即可。

威尔逊定理#

对于任意质数 p,有 (p1)!1(modp)

证:

不难发现 1,,p1 里每一个数都与 p 互质。

引理:若 a,p 互质,则 a 在模 p 意义下的逆元 a1 存在且唯一。

存在性显然,下证唯一:

假设有两个整数 b1,b2 满足

ab11(modp)ab21(modp)

那么

ab1ab20(modp)b1b20(modp)b1b2(modp)

回到原问题,由于每个数的逆元在 {1,,p1} 中唯一确定,因此互为逆元的两个数可以直接消掉,仅需考虑逆元是自己本身的数。

解方程 x21(modp) (1xp1),解得 x1=1,x2=p1

因此 (p1)!1×(p1)p11(modp)

卢卡斯定理#

(nm)(nmodpmmodp)×(npmp)(modp)

人话翻译:原组合数等于将 n,m 表示成 p 进制后每一位分别求组合数并相乘。

关于证明:感觉可以仿照拓展卢卡斯用 CRT 证,但是我不会。

posted @   LewisLi  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩