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