数论算法总结
费马小定理
(a^{p-1} equiv 1 pmod{p}space ((a,p)=1,isprime(p)))
- 证明:Link
这里给出通用形式:考虑任意正整数(amod pspace ((a,p)=1))的剩余系,有(1,2,3,ldots ,p-1)。
那么我们再取任意正整数(a'((a',p)=1)),将这个剩余系乘上(a')再(mod p)后,剩余系还是(1,2,ldots,p-1)的一个排列。
将这些数字连乘得到:(a'^{p-1} imes (p-1)! equiv (p-1)! mod p),两边同除((p-1)!)得到:(a'^{p-1} imes 1 equiv 1 mod p),将(a')替换为(a)即可。
求逆元就是(a^{p-2} imes a equiv 1 pmod{p})。
注意一切的推导都是在上面的式子条件下的。
欧拉定理
(a^{phi(n)}equiv 1 pmod{n} ((a,n)=1))
- 容易发现,前面的费马小定理是欧拉定理的儿子定理。
主要是来补充一下为什么(a imes x_i mod n ((a,n)=1,x_ileq n))有(phi(n))种结果。
假设(m_i=a imes x_i),那么假设存在(m_iequiv m_j pmod{n} (i ot =j)),那么就有:(a(x_j-x_i)= kn),但是由于((a,n)=1),(x_j-x_i<n),所以无论如何都不可能有解。 剩下的证明和上面一样。
拓展欧拉定理
(a^bequiv egin{cases} a^{b\%phi(p)}~~~~~~~~~~~gcd(a,p)=1\ a^b~~~~~~~~~~~~~~~~~~gcd(a,p) eq1,b<phi(p)\ a^{b\%phi(p)+phi(p)}~~~~gcd(a,p) eq1,bgeqphi(p) end{cases}~~~~~~~(mod~p))
证明:Link
BSGS
给定 (a,b,p),求最小的非负整数(x)令(x)满足(a^x equiv b pmod{p})。
首先有费马小定理可知:(a^{kmod (p-1)}equiv a^k pmod{p}),所以说(x< p-1)。
那么我们令(m=lceil sqrt{p}
ceil) ,(x=i imes m -j),那么有:$$a^{i imes m-j}equiv b pmod{p}$$
[a^{i imes m}equiv b imes a^jpmod{p}
]
那么暴力在(0 o m)枚举(j),存入Hash表,然后在(1 o m)枚举i查询。
Lucas定理
(inom{n}{m}=inom{lfloor frac{n}{p} floor}{lfloor frac{m}{p} floor} imes inom{n mod p}{mmod p})
证明:Link