【数论总结】

一、中国剩余定理

问题

求解线性同余方程组:
{xa1(modm1)xa2(modm2)xan(modmn)

  1. 弱化版(保证mi两两互质)
    可以证明此时一定有解,且可以构造出一个解x0,那么通解显然为xx0(modlcmi=1nmi)
    在模数两两互质的情况下容易构造出x0,设Mi=i=1nmimi,MiMi11(modmi),则x0=i=1naiMiMi1
    实现时,先把模数都乘起来,枚举1~n,求出每个Mimi下的逆元(用exgcd),同时按照式子一边累加,一边对所有模数的乘积(在模数两两互质时,所有模数的乘积即为所有模数的lcm)取模即可。
    需要注意,所有模数的乘积可能很大,因此在求aiMiMi1时可能要使用龟速乘。
    复杂度O(nlogw)(不论是否使用龟速乘)
  2. 拓展中国剩余定理(不保证mi两两互质)
    因为模数不再保证互质,因此Mimi不一定互质,就无法求得Mi的逆元,所以我们换一种思路:考虑合并两个形如xa1(modm1),xa2(modm2)的式子。
    那么有x=a1+k1m1=a2k2m2,即k1m1+k2m2=a2a1,若gcd(m1,m2)|(a2a1),则方程一定无解,否则,可以用exgcd求出一组(k1,k2),那么合并后的方程即为x=a1+k1m1(modlcm(m1,m2))
    实现时,枚举2~n,同时维护一个a1,m1,把当前枚举的ai,mi作为推到中的a2,m2即可。与弱化版相同需要注意是否需要使用龟速乘。复杂度同样为O(nlogw)(不论是否使用龟速乘)

二、欧拉定理

定理:

an{anmodϕ(m)(am)an(a⊥̸m,n<ϕ(m))anmodϕ(m)+ϕ(m)(a⊥̸m,nϕ(m))(modm)

证明:

证明了解即可,其中a,m互质的情况用m的简化剩余系乘上a很容易证明,至于第三行的式子证明较为复杂,可以看这里

适用范围:

每个式子的适用范围一定要注意,a,m互质时,三个式子都成立;否则,当a<ϕ(m)时,只有第二行成立,当aϕ(m)时,只有第三行成立。(特别容易忽略

其他结论:

这里有个重要的结论,对一个数m不断进行操作m=ϕ(m),显然m会不断变小直到1,那么最多进行多少次操作,m一定降为1呢?答案是O(logm)次。

证明考虑分析m是否存在质因子2,若存在,则m至少减小到一半(考虑欧拉函数的公式);若不存在,进行一次操作后m一定含有质因子2(考虑欧拉函数的公式)。证毕。

三、BSGS(先只考虑求最小解)

用于求解离散对数问题:
axb(modm)

  1. 弱化版:am
    由欧拉定理,可知axaxmodϕ(m)(modm),因此只需检验x[0,ϕ(m)1]的范围即可。
    但是实现中,检验[0,ϕ(m)1][0,m]的复杂度基本相同,因此,为了方便,往往直接把检验范围拓展到[0,m]
    做法考虑对检验范围(假设是[0,m])分块,设n=m,

四、 Lucas

对于质数p,设n=i=0aipi,m=i=0bipi,那么有:

(nm)=i=0(aibi)

证明考虑构造一个关于xn次多项式(1+x)n,容易发现其m次项系数即为(nm)
也就是要求[xm](1+x)n(modp)
先证明一个引理:
(1+x)pk1+xpk(modp)
先用二项式定理把p次方展开
(1+x)pk(i=0p(pi)xi)pk1(i=0pp!i!(pi)!xi)pk1(1+xp)pk1(1+xpk)

posted @   glq_C  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示