浅谈分数取模
费马小定理
定理
若 \(p\) 为质数且 \(\gcd(a,p)=1\),有 \(a^{p-1}\equiv1\pmod p\),即 \(a^p\equiv a\pmod p\)。
证明
取一质数 \(p\) 和整数 \(a\) 满足 \(\gcd(a,p)=1\),即 \(a\) 不为 \(p\) 的倍数。
则有:
证明
因为 $\gcd(i,p)=\gcd(a\cdot i,p)=1$,且 $a\cdot i\bmod p$ 是独一无二的,因此每一个 $i$ 都对应了一个 $a\cdot i$,且 $a\cdot i$ 互不相同。
又因为 $1\leq i\leq p-1,1\leq a\cdot i\bmod p\leq p-1$,因此,对于每一个 $i$ 都存在 $j$ 满足 $i\equiv a\cdot j\pmod p$。
故,原式成立:
$$ \prod_{i=1}^{p-1}i\equiv\prod_{i=1}^{p-1}(a\cdot i)\pmod p $$
令 \(f=\prod\limits_{i=1}^{p-1}i\),则:
即:\(a^{p-1}\equiv1\)。
证毕。
应用
求 \(\dfrac ab\bmod p\),保证 \(p\) 为质数。
这是个好问题。
对于整数 \(a\),让其对 \(p\) 取模,求 \(a\bmod p\),a%p
即可。
但如果要求 \(\dfrac ab\bmod p\) 呢?
这似乎就无解了,但是我们转换一下变成:
现在我们再来考虑。
由费马小定理得:\(b^{p-1}\equiv 1\pmod p\)。
那么 \(b^{p-2}\equiv b^{-1}\pmod p\)
那么,在模 \(p\) 意义下,有 \(a\times b^{-1}\bmod p=a\times b^{p-2}\bmod p\)。
结合快速幂 \(\mathcal O(\log p)\) 计算即可。
注意,此时 \(b\) 不能为 \(p\) 的倍数。
欧拉定理
定理
若 \(\gcd(a,p)=1\),则 \(a^{\varphi(p)}\equiv 1\pmod p\)。
证明
其实与费马小定理的证明非常相似。
设序列 \(\langle r_1,r_2,r_3,\cdots,r_{\varphi(p)}\rangle\) 满足 \(r_i=i\bmod p\)。
则有:
即:
应用
当 \(p\) 为素数时,有 \(\varphi(p)=p-1\),即费马小定理。
扩展欧几里得算法
详见此处。