关键概念性质
裴蜀定理
对于 p⊥q,我们总能找到 a,b 满足 ap+bq=1。
由于 exgcd 的过程就一定能找到一组特解 a0,b0,接下来我们来求通解。
假设 a=a0+k 是一个解,那么我们就有 b=q1−(a0+k)p。
带入 a0p+b0q=1,有 b=qb0q−kp=b0−qkp。
由于 b 是整数,所以 q∣(kp);又因为 p⊥q,所以 q∣k。
因此 {a=a0+k′qb=b0−k′p 是不定方程 ap+bq=1 的通解,其中 k′ 为任意整数。
乘法逆元
若 a⊥m,那么我们能在 0∼m−1 中找到唯一的 b 满足 ab≡1(modm)。
证明:由于方程 ab−km=1 一定能解出 b=b0+km,所以在 0∼m−1 中有唯一的 b 满足条件。
唯一分解定理
对于任意数 n=p1p2…pm 的表示方式是唯一的,其中 pi 是素数。
证明:当 n=1,2 时,分解是唯一的。设 n≤k 时分解都是唯一的,当 n=k+1 时,设 n=p1…pm=q1…qk,其中 p1≤⋯≤pm 并且 q1≤⋯≤qk。
-
如果 p1=q1,那么把 p1 除掉,n 一定会严格减小,根据归纳假设就有 n 的表示唯一;
-
如果 p1=q1,不失一般性,设 p1<q1,那么我们能找到一组 a,b 满足 ap1+bq1=1,那么:
q2…qk=(ap1+bq1)q2…qk=ap1q2…qk+bq1…qk
由于 n=q1…qk,所以 p1∣bq1…qk,又因为 p1∣ap1q2…qk,所以 p1∣q2…qk。
然而 q2…qk 严格小于 n,根据归纳假设,它的表示形式唯一;但是 p1<q2 又是 q2…qk 的一个因子,所以我们能推出 q2…qk 存在另一个含有 p1 的表示形式,产生矛盾,因此 p1=q1。
互质
若 (a,b)=1,称 a⊥b。设 a=∏piαi,b=∏piβi,其中 pi 取遍所有质数,αi,βi≥0。
如果 a⊥b,则对所有 i 有 min{αi,βi}=0,又因为它们都是非负整数,所以这等价于 αiβi=0。
推论:如果 m⊥n,则 a⊥m 且 a⊥n 等价于 a⊥mn。设 a 对应的指数是 αi,m 对应的是 βi,n 对应的是 γi。
- 充分性:αiβi=αiγi=0,则 αi(βi+γi)=0;
- 必要性:αiβi+αiγi=0,又因为这两项都是非负的,所以它们必须都等于 0。
序列 kn mod m 的性质
证明:0,n,2n,…,(m−1)n 在模 m 的情况下是 0,d,2d,…,m−d 这 m/d 个数以某种顺序重复 d 次,其中 d=(m,n)。
首先,我们有 knmodm=kn−⌊mkn⌋m=d(kdn−⌊m/dkn/d⌋dm)。
令 n′=n/d,m′=m/d,有 d(kn′−⌊m′kn′⌋m′)=d(kn′modm′)。
所以我们证 kn′modm′ 是 0,1,2,…,m′−1 以某种顺序重复 d 次。
若 kn′≡jn′(modm′),由于 m′⊥n′,所以 k≡j(modm′)。
因此当 k=0∼m′−1 时,它们是互不相同的;又因为模 m′ 的情况下只有 m′ 个数字互不相同,所以它们就是 0,1,…,m′−1 的某种排列。
并且,当 k≡j(modm′) 时,有 kn′≡jn′(modm′),所以它是重复出现的。
欧拉定理
欧拉函数 φ(m)=∑k=1m[k⊥m],即与 m 互质的数的个数。
欧拉定理的内容是:对于 a⊥m,有 aφ(m)≡1(modm),下面我们来证明。
设 k1,k2,…,kφ(m) 是在 1∼m 中与 m 互质的所有数,和证明序列 kn′modm′ 是 0,1,2,…,m′−1 以某种顺序重复出现一样,我们可以证明:ak1modm,ak2modm,…,akφ(m)modm 是 k1,k2,…,kφ(m) 以某种顺序的排列。
若 aki≡akj(modm),由于 a⊥m,所以 ki≡kj(modm),所以只能有 i=j,这证明了 akimodm 两两不相等。
由于 m⊥a 且 m⊥ki,于是 aki⊥m,所以序列 akimodm 是 φ(m) 个两两不相等的、与 m 互质的、1∼m 之间的数,于是这两个序列只是顺序不一样。
那么,我们把这两个序列分别相乘,就有 aφ(m)∏i=1φ(m)ki≡∏i=1φ(m)ki(modm)。
由于 ki⊥m,有 ∏ki⊥m,于是 aφ(m)≡1(modm)。
积性函数
设 m1⊥m2 且 m=m1m2,如果有 f(m)=f(m1)f(m2),那么称 f 是积性函数。
若 f(m)=∑d∣mg(d),那么 f 是积性函数等价于 g 是积性函数。
-
必要性:若 g 是积性函数,得到:
f(m1m2)=d∣m1m2∑g(d)=d1∣m1∑d2∣m2∑g(d1d2)=d1∣m1∑g(d1)d2∣m2∑g(d2)=f(m1)f(m2)
这里解释一下,由于 m1⊥m2,那么枚举 d∣m1m2 等价于枚举 d1∣m1,d2∣m2 其中 d=d1d2。
为什么?我们可以通过证明分别枚举不重不漏来证明这两个方式等价。
- 唯一性:不失一般性,设 d1=d1′,d2 与 d2′ 的关系任意,那么一定有 d1d2=d1′d2′。考虑等式两边的因式分解,由于 d1=d1′ 并且 d2 与 d2′ 不含有 m1 的质因子,所以不可能使得等式成立。
- 完整性:对于每个 d,它总有来自于 m1 的部分和 m2 的部分,因此是不可能被漏掉的。
-
充分性:若 f 是积性函数。当 m=1 时,根据定义 f(1)=g(1),于是 f(1)=f2(1) 能推出 g(1)=g2(1)。
设 m≤k 时都成立 g(m1m2)=g(m1)g(m2),那么当 m=k+1 时,由 f(m)=f(m1)f(m2) 得到:
d∣m∑g(d)=d1∣m1∑g(d1)d2∣m2∑g(d2)=d1d2∣m1m2∑g(d1)g(d2)
只要不是 d1=m1 且 d2=m2,就能根据归纳假设,得到 g(d1)g(d2)=g(d1d2)。
为什么?因为只要存在任意一个 di<mi,就有 d1d2<m1m2,等价于 d1d2≤m−1,这就落到了归纳假设的范围内。
d∣m∑g(d)=d1d2∣m1m2∑g(d1)g(d2)=d1d2∣m1m2∑g(d1d2)−g(m1m2)+g(m1)g(m2)=d∣m∑g(d)−g(m1m2)+g(m1)g(m2)
移项可得 g(m1m2)=g(m1)g(m2)。
欧拉函数
关于欧拉函数有这样一个等式:∑d∣nφ(d)=n。
这里给出书上的证明方法:对序列 n0,n1,…,nn−1,它们化简到最简分母时,分母一定是 n 的因子。
我们假设 d∣n 是化简之后的一类分母,可以证明,对于所有 k⊥d 且 k<d,dk 都会出现在原序列中,同样是证明不重和不漏。
-
唯一性:设 d1k1 和 d2k2 满足上述要求,首先有 k<d 因此通分后分子也小于分母,所以它们一定会出现在序列中,下面证它们不相等。
-
若 d1=d2,那么枚举不同地 k 保证了 k1=k2,就有 k1=k2,于是 d1k1=d2k2。
-
若 d1=d2,当 k1d2=k2d1 时,有 k1=d2k2d1。由于 k2⊥d2,且 k1 为整数,有 d2∣d1。
设 d1=md2,由于 d1=d2 所以 m>1,那么 k1=mk2,就有 (k1,d1)=m=1,与题设矛盾,于是不成立。
-
完全性:对于任意一个 nk,它通分之后分母 d 一定是 n 的因子,并且分子与分母互质,并且分子小于分母。
因此,我们可以枚举每一种分母 d,它们代表的分数会出现 φ(d) 次,所以 ∑d∣nφ(d)=n。
由于 f(n)=∑d∣nφ(d)=n 是积性函数,所以 φ(n) 是积性函数。
那么我们只需要求 φ(pk),其中 p 是质数,就可以求出 φ(n) 的表达式。
对于 1,2,…,pk 中,不与 pk 互质的数都是 p 的倍数,所以 φ(pk)=pk−pk−1=pk(1−p−1),所以:φ(n)=n∏(1−pi−1)。
莫比乌斯函数
书上给出了一种定义方式:μ(d) 是满足 ∑d∣nμ(d)=[n=1] 的函数,接下来我们来求它的解析式。
容易验证 f(n)=[n=1] 是积性函数,所以 μ(n) 也是积性函数。
那么我们只需要求 μ(pk),其中 p 是质数,就可以求出 μ(n) 的表达式。
根据定义,我们有 μ(1)+μ(p)+μ(p2)+⋯+μ(pk)=[n=1]。
- 当 k=0 时,有 μ(1)=1;
- 当 k=1 时,有 μ(p)=−1;
- 当 k≥2 时,有 μ(p2)+⋯+μ(pk)=0,分别取 k=2,3,… 可以得知它们都是 0。
因此 μ(n)={(−1)m∀pi2∣n0∃pi2∣n,其中 m 是 n 的质因子数量,pi 是 n 的质因子。
莫比乌斯反演
式 g(m)=∑d∣mf(d) 等价于 f(m)=∑d∣mμ(d)g(dm)。
-
充分性:当 g(m)=∑d∣mf(d) 时,有:
d∣m∑μ(d)g(dm)=d∣m∑μ(dm)g(d)=d∣m∑k∣d∑μ(dm)f(k)=k∣m∑d∣km∑μ(kdm)f(k)
注意,这一步的证明在例题2。
d∣m∑μ(d)g(dm)=k∣m∑f(k)d∣km∑μ(kdm)=k∣m∑f(k)d∣km∑μ(d)=k∣m∑f(k)[km=1]=f(m)
-
必要性:当 f(m)=∑d∣mμ(d)g(dm) 时,有:
d∣m∑f(d)=d∣m∑k∣d∑μ(k)g(kd)=d∣m∑k∣d∑μ(kd)g(k)=k∣m∑l∣km∑μ(l)g(k)=k∣m∑g(k)l∣km∑μ(l)=k∣m∑g(k)[km=1]=g(m)
例题
例1
求 ∑0≤k<m⌊mnk+x⌋,其中 m>0,n 是整数,x 是实数。
我们先把 nk/m 的整数部分移到外面去,即:
0≤k<m∑⌊mnk+x⌋=0≤k<m∑⌊mknmodm+x⌋+0≤k<m∑mkn−knmodm=0≤k<m∑⌊mknmodm+x⌋+0≤k<m∑mkn−0≤k<m∑mknmodm=0≤k<m∑⌊mknmodm+x⌋+2n(m−1)−md(0+1+⋯+(dm−1))×d=0≤k<m∑⌊mknmodm+x⌋+2n(m−1)−2m−d=di=0∑m/d−1⌊mx+di⌋+2n(m−1)−2m−d=di=0∑m/d−1⌊m/dx/d+m/di⌋+2n(m−1)−2m−d=d⌊dx⌋+2n(m−1)−2m−d
例2
证明:∑d∣m∑k∣dad,k=∑k∣m∑l∣kmakl,k。
首先处理左式:
d∣m∑k∣d∑ad,k=d,k∑j,l∑ad,k[m=jd][d=kl]=k,j,l∑akl,k[m=jkl]
然后是右式:
k∣m∑l∣km∑akl,k=k,l∑j,n∑akl,k[m=jk][km=nl]=k,l∑j,n∑akl,k[m=jk][j=nl]=k,n,l∑akl,k[m=nlk]
我们发现除了求和的下标字母不同,这两个式子是相同的。