并非从 0 开始,但反正我是从来没有好好学过蓝书数学这章。
主要最近碰到太多数学题了,不得不恶补一下。
更好的阅读体验
质数
- 不超过 N 的质数个数大约为 NlnN。
- 线性筛法,每次用最小的质因子筛质数,可以用来 O(n) 快速筛诸如欧拉函数、因子个数等。
- N=pc11∗...∗pckk
P3383, UVA10140, P10495
约数
- N 的正约数集合:{pb11∗...∗pbkk},其中 0≤bi≤ci
- N 的正约数个数:∏ki=1(ci+1)
- N 的正约数和:∏ki=1(∑cij=0(pi)j)
- int 范围内约数个数最多的数有 1600 个约数
最大公约数
- ∀a,b∈N, 有 a≥b,gcd(a,b)=gcd(b,a−b)=gcd(a,a−b)
- ∀a,b∈N, 有 gcd(2a,2b)=2gcd(a,b)
- ∀a,b∈N,b≠0, 有 gcd(a,b)=gcd(b,amodb)
积性函数
- 当 a,b 互质时,有 f(ab)=f(a)×f(b),则称 f 为积性函数
- 若 f 是积性函数,且 n=∏ki=1pcii,则 f(n)=∏ki=1f(pcii)
互质与欧拉函数
-
∀a,b∈N,若 gca(a,b)=1,则 a,b 互质
-
φ(N)=N∗∏p|N(1−1p),证明参考容斥原理
-
∀n>1,1∼n 中与 n 互质的数的和为 n×φ(n)÷2
-
若 a,b 互质,则 φ(a,b)=φ(a)φ(b),即 φ 为积性函数
-
设 p 为质数,若 p|n 且 p2|n,则 φ(n)=φ(np)×p
-
设 p 为质数,若 p|n 且 p2∤n,则 φ(n)=φ(np)×(p−1)
-
∑d|nφ(d)=n
证明(7):令 f(n)=∑d|nφ(d),设 n,m 互质,则 f(nm)=∑d|nmφ(d)=∑d|nφ(d)×∑d|mφ(d)=f(n)×f(m)
又 f(pk)=∑d|pkφ(d)=φ(1)+φ(p)+...+φ(pk)=1+p−1+p2−p+...+pk−pk−1=pk
∴f(n)=∏ki=1f(pcii)=∏ki=1pcii=n
P1463,P2261,P1072,P2158
同余
- 对于 ∀a∈[0,m−1],集合 a+km(k∈Z) 的所有数模 m 同余,该集合称为一个模 m 的同余类,记为 ¯a
- 模 m 的同余类共有 m 个,分别为 ¯0,¯1,...¯m−1,它们构成 m 的完全剩余系。
- 1∼m 中与 m 互质的数共有 φ(m) 个,它们构成 m 的简化剩余系。
- 简化剩余系关于模 m 乘法封闭(乘法封闭即 ∀a,b∈S,ab∈S)。
欧拉定理
- 若正整数 a,n 互质,则 aφ(n)≡1(modn)
证明:设 n 的简化剩余系为 {¯a1,¯a2,...,¯aφ(n)},对于 ∀ai,aj,若 a×ai≡a×aj(modn),则可推出 ai≡aj(modn),矛盾。
所以,当 ai≠aj 时,¯aai 与 ¯aaj 代表不同的同余类。
根据上文所述的乘法封闭,¯aai 也在简化剩余系中,所以 {¯aa1,¯aa2,...,¯aaφ(n)} 也是 n 的简化剩余系。
注意到 aφ(n) 与 n 互质,所以 :
aφ(n)a1a2...aφ(n)≡(aa1)(aa2)...(aaφ(n))≡a1a2...aφ(n)(modn)
因为 a1a2...aφ(n) 与 n 互质,所以 aφ(n)≡1(modn)
- 由欧拉定理引申出费马小定理:对于任意正整数 a,p 互质且 p 为质数,则 ap−1≡1(modp)
证明:由欧拉定理得 aφ(p)≡1(modp),又因为 p 为质数,所以 φ(p)=p−1,所以 ap−1≡1(modp)
- 费马小定理也可以写成:对于任意整数 a,若 p 是质数,有 ap≡a(modp)
- 欧拉定理的推论:若正整数 a,n 互质,则对于任意正整数 b,有 ab≡abmodφ(n)(modn)
证明:设 b=q×φ(n)+r,其中 0≤r<φ(n),即 r=bmodφ(n)
那么 ab=aq×φ(n)+r=(aφ(n))q×ar≡1q×ar≡ar≡abmodφ(n)(modn)
- 由欧拉定理的推论,对于乘方算式,可以将底数对 p 取模,指数对 φ(p) 取模
- 当 a,n 不一定互质且 b>φ(n) 时,有 ab≡abmodφ(n)+φ(n)(modn),可以通过寻找 ab(modn) 的指数循环节来证明。
拓展欧几里得
- 裴蜀定理(Bézout 定理):对于 ∀a,b∈Z,存在一对整数 x,y,满足 ax+by=gcd(a,b)
证明:当 b=0 时,显然有 x=1,y=0。
当 b>0 时,有 gcd(a,b)=gcd(b,amodb)。存在 x,y∈Z 使得 b×x+(amodb)×y=gcd(b,amodb)
变型得,ay+b(x−⌊ab⌋y),令 x′=y,y′=x−⌊ab⌋y,可得 ax′+by′=gcd(b,amodb)=gcd(a,b)
对欧几里得算法的过程采用数学归纳法即可证明裴蜀定理。
-
设 d 为 gcd(a,b),根据上述过程可以求出 ax+by=d 的一组特解 x0,y0
-
对于方程 ax+by=c,它有解的充要条件是 d|c,满足该条件则原方程的一组特解为 cdx0,cdy0
-
由于 a(x+kbd)+b(y−kad)=ax+by,所以 ax+by=c 的通解可表示为:
x=cdx0+kbd,y=cdy0−kad(k∈Z)
线性同余方程
长相类似 a×x≡b(modm),其等价于 a×x−b 为 m 的 −y 倍,于是可以得到 ax+ym=b。
根据拓展欧几里得,该方程有解当且仅当 gcd(a,m)|b,有解时直接拓展欧几里得做即可。
乘法逆元
若整数 b,m 互质,且 b|a,则存在整数 x 满足 a÷b≡a×x(modm),x 即为 b 的模 m 乘法逆元,记为 b−1(modm)
可以用费马小定理证明 x=bm−2,可以用于解决除法取模。
中国剩余定理
设 m1,m2,...,mn 是两两互质的整数,m=∏ni=1mi,Mi=m÷mi,ti 为 Miti≡1(modmi) 的一个解。对于任意 n 个整数 a1,a2,...,an 组成的方程组:
⎧⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪⎩x≡a1(modm1)x≡a2(modm2)⋮x≡an(modmn)
有整数解 x=∑ni=1aiMiti
拓展中国剩余定理
当 m1,m2,...,mn 不两两互质时,便无法使用中国剩余定理,好在我们可以借助数学归纳法求解。
设已经求出前 k−1 个方程的一个解 x,记 m=lcm(m1,m2,⋯,mk−1),则前 k−1 个方程的通解为 x+im(i∈Z)。
那么对于第 k 个方程,我们求出整数 t 使得 x+tm≡ak(modmk),变形得 tm≡ak−x(modmk),可以使用拓展欧几里得求解。
求解出 t 后,则 x′=x+tm 为前 k 个方程的通解,一直做到第 n 个方程即可。
高次同余方程
喵?
P10496,P1082,P4777
矩阵乘法
- 对于 n×m 矩阵 A,B 则 C=A±B⇔∀i∈[1,n],j∈[1,m],Ci,j=Ai,j±Bi,j,即对应位置相加减
- 对于 n×m 矩阵 A 和 m×p 矩阵 B,C=A×B 是 n×p 矩阵,其中 ∀i∈[1,n],j∈[1,p],有 Ci,j=∑mk=1Ai,k×Bk,j
- 矩阵乘法满足结合律,分配律,但不满足交换律
- 矩阵乘法加速递推问题的特点:
· 可以抽象出一个长度为 n 的向量,该向量在每个单位时间发生一次变化
· 变化的形式为线性递推
· 该递推式在每个时间本身保持不变
· 向量变化时间很长,但向量长度 n 不大
- 对于矩阵乘法加速递推问题,若状态矩阵中的第 x 个数对下个状态的 y 产生影响,则把转移矩阵的 (x,y) 赋值为适当的系数
- 矩阵乘法加速递推的时间复杂度是 O(n3logT)
P1939,P10498
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步