之前都没有怎么理解,现在来复习一下。
费马小定理
对于任意质数 (p) 和任意整数 (a) 满足 (gcd(a,p)=1),有 (a^{p-1}equiv 1pmod p)。
引理 1
对于任意三个正整数 (a,b,c) 满足 (gcd(c,m)=1),若 (acequiv bcpmod m),则 (aequiv bpmod m)。
证明:
变成 (c(a-b)equiv 0pmod m) 之后,因为互质所以可以扔掉 (m)。
引理 2
若 ({a_1,cdots,a_m}) 是 (m) 的完全剩余系,存在整数 (b) 满足 (gcd(b,m)),那么 ({a_1 imes b,cdots,a_m imes b}) 也是 (m) 的完全剩余系。
证明:
反证法。如果存在 (a_i imes bequiv a_j imes bpmod m),根据引理 1 可得 (a_iequiv a_jpmod m),(a) 不可能是完全剩余系。
证明
构造关于 (p) 的完全剩余系 ({1,2,cdots,p-1,p})。
根据引理 2 可得 ({a,2a,cdots,(p-1)a,pa}) 也是 (p) 的完全剩余系。
一一对应可得 (1 imes 2 imescdots imes(p-1)equiv a imes 2a imescdots imes(p-1)apmod p)。
即 ((p-1)!equiv(p-1)! imes a^{p-1}pmod p)。
显然 (gcd(p,(p-1)!)=1),根据引理 1 即可证毕。
欧拉定理
(a^{phi(n)}equiv 1pmod n),其中 (gcd(a,n)=1)。
费马小定理是 (n) 为质数的一种特殊情况。
证明好像不能用费马小定理的套,等看懂了再来补。
裴蜀定理
不定方程 (ax+by=c) 有解的充分必要条件是 (gcd(a,b)|c)。
证明
充分性:用拓展欧几里得的构造方法就可以构造出来。
必要性:因为 (gcd(a,b)|ax),(gcd(a,b)|by),所以 (gcd(a,b)|ax+by)。
卢卡斯定理
适用于 (p) 较小的情况。
证明太难了先鸽着。
试除法
从 (2) 枚举到 (lfloorsqrt n floor) 判断能否整除。
埃氏筛
从小到大枚举每个质数,将范围内它的倍数全部标记为合数。
当然有一个小优化,对于 (i) 这个质数,枚举 (j) 筛掉 (i imes j) 的时候我们强制钦定 (ileq j),如果 (i>j) 的话 (i imes j) 肯定在 (j) 中至少一个质因子那里筛过了。
时间复杂度 (Oleft(nloglog n ight)),会了再来补。
欧拉筛
发现埃氏筛中的小优化没有优化彻底,一个合数仍然可能被筛多次。我们希望一个合数只在它最小的质因数那里被筛一次。
对于每个数 (i),尝试枚举小于等于 (i) 的每个质数 (p) 同时筛去 (p imes i)。一旦 (p|i) 就直接退出循环。
为什么这样是对的呢?我们发现如果 (p imes i) 被一个比 (p) 更小的质数 (q) 筛去了,那么 (q|i)。
而之前肯定已经枚举过了 (q),并跳出了循环,不可能做到 (p)。
于是这个东西就是线性的啦。
乘法逆元
乘法逆元,是指数学领域群 (G) 中任意一个元素 (a),都在 (G) 中有唯一的逆元 (a'),具有性质 (a imes a'=a' imes a=e),其中 (e) 为该群的单位元。
单位元是集合里的一种特别的元,与该集合里的运算有关。当它和其他元素结合时,并不会改变那些元素。
所以在模域下的乘法中,单位元就是 (1)。
当然如果模数不是质数,一些数不存在乘法逆元。
在 OI 中是解决模意义下除法的必备方法。
在求 (frac{y}{x}) 时我们可以先求出 (frac{1}{x}) 再乘上 (y)。
具体地,若 (a imes bequiv 1pmod p),其中 (gcd(a,p)=1),则称 (b) 是 (a) 在模 (p) 意义下的乘法逆元,记作 (a^{-1}),即 (bequivfrac{1}{a}pmod p)。
存不存在乘法逆元的证明以及一些更深刻的理解(?)之后再补。
下面介绍几种求乘法逆元的方法。
费马小定理
只能解决 (p) 是质数的情况。
欧拉定理
需要事先求出 (phi(a))。
把两个定理分开感觉写了一堆废话……
拓展欧几里得
发现这是个同余方程的形式,然后就没了。
递推
没啥用,咕咕咕。
阶乘
在求组合数时我们常常会需要求阶乘的逆元。
考虑递推,从 (i) 推到 (i-1):
就做到了线性。
再深入思考一下你会发现 (frac{1}{i!} imes(i-1)!=frac{1}{i}pmod p)。
然后就可以简单地替代上一种递推了。