Loading

[笔记] 简单数论定理

费马小定理

\(a,p\in \mathbb{Z}\)\(p\) 为质数,且 \(a\not\equiv 0\pmod{p}\) 时有:\(a^{p-1}\equiv 1\pmod{p}\)

所以 \(a^b\equiv a^{b\bmod (p-1)}\pmod p\)

欧拉定理

\(a,m\in \mathbb{Z}\),且 \(\gcd(a,m)=1\) 时有: \(a^{\varphi(m)}\equiv 1\pmod{m}\)

这里 \(\varphi(x)\) 是数论中的欧拉函数。

所以 \(a^b\equiv a^{b\bmod \varphi(m)}\pmod m\)

扩展欧拉定理

\(a,m\in \Z\)\(\gcd(a,m)\ne 1\) 时有:
\(a^b\equiv\left\{\begin{matrix}a^b&,b<\varphi(m)\\a^{(b\bmod\varphi(m))+\varphi(m)}&,b\ge\varphi(m)\end{matrix}\right.\pmod m\)

(第一种状况的含义是,如果 \(b<\varphi(m)\) 的话,那么就不能降幂。一般题目中 \(m\) 不会太大,则此时复杂度可以接受。而如果 \(b\ge\varphi(m)\) 的话,那么复杂度可能超出预期,这个时候需要降幂来降低复杂度)

ExCRT

个人认为比 CRT 更加好理解和记忆。

假设有 \(n\) 个同余方程:

\[x\equiv b_1\pmod{p_1}\\ x\equiv b_2\pmod{p_2}\\ \cdots\\ x\equiv b_n\pmod{p_n}\\ \]

可以直接使用 Exgcd 将这些同余方程合并:

\[b_1+k_1p_1=b_2+k_2p_2\pmod{\rm{lcm}(p1,p2)} \]

根据这一点,用 Exgcd 求出 \(k_1,k_2\) 即可将方程合并。

卢卡斯定理

用于模数为质数,但是较小的时候,求组合数:

\[\binom{n}{m}=\binom{n/p}{m/p}\binom{n\%p}{m\%p} \]

当模数不是质数时,如果分解质因数,每个质因数的次数都为 \(1\),那么分开做,再用 CRT 合并即可。

否则要用到 ExLucas。

库默尔定理

\(m,n\) 为正整数,\(p\) 为素数,则 \(\dbinom{n + m}{m}\)\(p\) 的幂次等于 \(m+n\)\(p\) 进制下的进位次数。

posted @ 2022-04-15 10:12  IrisT  阅读(54)  评论(0编辑  收藏  举报