大概是总结一下这几天正睿的数论

数学是真的需要写点什么来总结一下,不然隔天就忘(

正睿的课不知道比你谷网校高到哪里去了

贴的课件都是直接用 Mathpix Snipping Tool 识别的,有问题的话不怪我((

upd:哦草这玩意一个月只能识别 50次然而我在 8.4 就已经用完次数了

一些基础的备忘:aba \mid b 表示 aabb 的因数。

基础数论

戴言鸽鸽讲得好快……自闭了

裴蜀定理

贴课件

对于任意整数 a,b,m,a, b, m, 则存在整数 x,yx, y 满足 ax+by=m,a x+b y=m, 当且仅当 gcd(a,b)m\operatorname{gcd}(a, b) \mid m

a,ba, b 之一为 0,结论显然成立。 若否,考虑 A={xa+yb(x,y)Z2}A=\left\{x a+y b \mid(x, y) \in \mathbb{Z}^{2}\right\} 中的最小正元素 d0=x0a+y0bd_{0}=x_{0} a+y_{0} b(这一定存在)。考虑任意 p=x1a+y1bA,p=x_{1} a+y_{1} b \in A,p=qd0+r,p=q d_{0}+r, 其中 0r<d0,0 \leq r<d_{0},r=pqd0A,r=p-q d_{0} \in A,r=0r=0_{\circ}d0p,d_{0} \mid p,d0a,bd_{0} \mid a, b
然后,考虑任意 da,b,d \mid a, b,a=kda=k db=ld,b=l d,d0=x0a+y0b=(x0k+y0l)d,d_{0}=x_{0} a+y_{0} b=\left(x_{0} k+y_{0} l\right) d,dd0,d \mid d_{0},d0=gcd(a,b)d_{0}=\operatorname{gcd}(a, b)_{\circ} 在方程中,若 m=m0d0,m=m_{0} d_{0}, 则显然有无穷多组解。相反,若有解,则 mA|m| \in A,故 d0md_{0}\mid |m|,即 d0md_{0} \mid m

你发现你什么都看不懂

我们来梳理一下:
给定的是 a,b,ma,b,m,大体证明思路是去某集合 AA 中的一元素 d0d_0,证 d0=gcd(a,b)d_0=\gcd(a,b),之后……写不下去了((

我们来一条一条的看

a,ba, b 之一为 0,结论显然成立。

不妨假设 b=0b=0,则 gcd(a,b)=a\gcd(a,b)=a,原方程化为 ax=max=m。显然当 ama \mid mgcd(a,b)m\gcd(a,b) \mid m 时有解。a=0a=0 时同理。

若否,考虑 A={xa+yb(x,y)Z2}A=\left\{x a+y b \mid(x, y) \in \mathbb{Z}^{2}\right\} 中的最小正元素 d0=x0a+y0bd_{0}=x_{0} a+y_{0} b(这一定存在)。

看不懂 AA 的定义的话建议百度一下(

考虑任意 p=x1a+y1bA,p=x_{1} a+y_{1} b \in A,p=qd0+r,p=q d_{0}+r, 其中 0r<d00 \leq r<d_{0}

信息量有点大((

pp 事实上是集合 AA 中的任何一个元素。

“设 p=qd0+r,p=q d_{0}+r, 其中 0r<d00 \leq r<d_{0}” 这句的意思是说设 q=pd0q=\left\lfloor\frac{p}{d_{0}}\right\rfloorr=pmodd0r=p \bmod d_0

r=pqd0Ar=p-q d_{0} \in A,故 r=0r=0,故 d0pd_{0} \mid p,则 d0a,bd_{0} \mid a, b

我们展开等式右边的 ppd0d_0,得到

r=pqd0=x1a+y1bq(x0a+y0b)=a(x1qx0)+b(y1qy0)\begin{aligned} r &=p-q d_{0} \\ &=x_{1} a+y_{1} b-q\left(x_{0} a+y_{0} b\right) \\ &=a\left(x_{1}-q x_{0}\right)+b\left(y_{1}-q y_{0}\right) \end{aligned}

不难发现 rAr \in A

由于 d0d_0AA 中最小的正元素,0r<d00 \le r < d_0(上面的结论),我们得到 r=0r=0

r=0r=0 说明 pmodd0=0p \bmod d_0 = 0,即 d0pd_0 \mid p

注意到我们的 pp 是在 AA 中任取的,而 a,bAa,b \in A,于是我们得到 d0a,bd_0 \mid a,b

(在 ax+byax+by 中,我们取 x=1,y=0x=1,y=0 即得到 aabb 同理)

然后,考虑任意 da,b,d \mid a, b,a=kda=k db=ldb=l d,则 d0=x0a+y0b=(x0k+y0l)dd_{0}=x_{0} a+y_{0} b=\left(x_{0} k+y_{0} l\right) d,故 dd0,d \mid d_{0},d0=gcd(a,b)d_{0}=\operatorname{gcd}(a, b)_{\circ}

任意 da,bd\mid a,b 都是 d0d_0 的因数,说明 d0=gcd(a,b)d_0=\gcd(a,b)

在方程中,若 m=m0d0,m=m_{0} d_{0}, 则显然有无穷多组解。相反,若有解,则 mA|m| \in A,故 d0md_{0}\mid |m|,即 d0md_{0} \mid m

若方程有解则有 m=ax+bym=ax+by,即 mA|m| \in A。由于对于任何 pAp\in Ad0pd_0 \mid p,于是我们得出 d0md_0 \mid m,即 gcd(a,b)m\gcd(a,b) \mid m

扩展欧几里得算法

扩展欧几里得算法用于求解形如 ax+by=gcd(a,b)ax+by=\gcd(a,b) 的方程(其中 x,yx,y 为未知数)

没有课件(

不妨先把等式两边同除 gcd(a,b)\gcd(a,b),得到

agcd(a,b)x+bgcd(a,b)y=1\frac{a}{\gcd(a, b)} x+\frac{b}{\gcd(a,b)} y=1

于是我们可以把求解目标化为解 ax+by=1ax+by=1,其中 a,ba,b 互质。

不妨假设 a>ba>b

a=qb+ra=qb+r,其中 0r<b0 \le r < b

展开式子,得到

(qb+r)x+by=1(qx+y)b+rx=1\begin{array}{l} (q b+r) x+b y=1 \\ (q x+y) b+r x=1 \end{array}

我们发现它又形成了一个新的形如 ax0+by0=1ax_0+by_0=1 的方程:bx0+ry0=1bx_0+ry_0=1,其中 x0=qx+yx_0=qx+yy0=xy_0=x

同时我们发现,如果我们得到了方程 bx0+ry0=1bx_0+ry_0=1 的一组解,我们同样可以得到 ax+by=1ax+by=1 的一组解。

x=y0y=x0qy0x=y_0\\ y=x_0-qy_0

注意到当 b=0b=0 时,{x=1y=0\left\{\begin{array}{l} x=1 \\ y=0 \end{array}\right. 是方程的一组特解,于是我们递归求解即得到答案。

乘法逆元

大家都会(

线性同余方程组

太棒了,我正逐渐理解一切

课件

当求解形如 xai(modmi)x\equiv a_i \pmod {m_i} 的线性同余方程组时,我们需要使用中国剩余定理(CRT)。

m=i=1kmim=\prod_{i=1}^{k} m_{i},则在 mim_{i} 两两互质时, xi=1kMiNiai(modm)x \equiv \sum\limits_{i=1}^{k} M_{i} N_{i} a_{i}\pmod m,其中Mi=mmiM_{i}=\frac{m}{m_{i}},而 MiNi1(modmi)M_{i} N_{i} \equiv 1 \pmod {m_{i}}(即 NiN_iMimodmiM_i \bmod m_i 意义下的逆元)

注意:我们在尝试证明这个结论,即将它带入每个方程验证,而不是推导它

我们设当前正在尝试带入验证第 jj 个方程。

注意到 xi=1kMiNiai(modm)x \equiv \sum\limits_{i=1}^{k} M_{i} N_{i} a_{i}\pmod m 是一个和式,所以我们可以把它分项讨论。设当前在第 ii 项。

i=ji=j 时,有 MiNi1(modmi)M_i N_i \equiv 1 \pmod{m_i},即 x=ai=ajx=a_i=a_j

iji\ne j 时,Mi=mmiM_{i}=\frac{m}{m_{i}} 一定是 aja_j 的倍数,即 x=0x=0

综上,我们得到对于每一个方程 jjxi=1kMiNiai(modm)x \equiv \sum\limits_{i=1}^{k} M_{i} N_{i} a_{i}\pmod m 都是它的一个解。

我们来讨论一点其他的东西吧

CRT 事实上是非常有用的东西,所以我打算稍微记一点关于 CRT 的使用的东西

当你需要求解一个式子在 modp\bmod p 意义下的值,你需要用到模数为质数的一些性质然而 pp 是合数,这种时候我们需要使用 CRT 合并答案。

我们移古代猪文一题为例:在算法的某一步我们需要求解 kn(nk)(mod999911658)\sum\limits_{k \mid n} \binom n k \pmod {999911658},其中 999911658999911658 是一个合数,等于 2×3×4679×356172 \times 3 \times 4679 \times 35617

我们可以考虑分别求出 kn(nk)\sum\limits_{k \mid n} \binom n k 在模 2,3,4679,356172,3,4679,35617 意义下的答案(使用 Lucas 定理),于是我们得到如下线性同余方程组

{xa1(mod2)xa2(mod3)xa3(mod4679)xa4(mod35617)\begin{cases} x \equiv a_1 \pmod 2\\ x \equiv a_2 \pmod 3\\ x \equiv a_3 \pmod {4679}\\ x \equiv a_4 \pmod {35617} \end{cases}

可以使用 CRT 求解该方程组以合并答案。

Q:CRT 没有保证所得解是唯一的,那怎么确保这样合并后的正确性呢?

A:容易证明,任意一个满足 mim_i 两两互质的线性同余方程组 xai(modmi)x\equiv a_i \pmod {m_i} 都有无穷多个解,只需要把其中一个解加上 / 减去 mi\prod m_i 即可得到另一个解。

注意到我们的答案需要 mod999911658\bmod 999911658,而该方程组的解在 mod999911658\bmod 999911658 意义下是唯一的,所以可以放心地使用 CRT 合并答案。

(以上是自己瞎扯的)

欧拉定理 / 扩展欧拉定理

aφ(p)1(modp)a^{\varphi(p)} \equiv 1 \pmod p

ax{axmodφ(m)(a,m)=1axmodφ(m)+φ(m)(a,m)1,xφ(m)(modm)a^x\equiv \begin{cases} a^{x\bmod\varphi(m)} & (a,m)=1 \\ a^{x\bmod\varphi(m)+\varphi(m)} & (a,m)\neq1,x\ge\varphi(m) \end{cases} \pmod m

这个大家也都会

证明也简单

Lucas 定理

(nm)modp=(n/pm/p)(nmodpmmodp)modp\binom{n}{m}\bmod p = \binom{\left\lfloor n/p \right\rfloor}{\left\lfloor m/p\right\rfloor}\cdot\binom{n\bmod p}{m\bmod p}\bmod p

大家都会

证我也不会证(

不那么基础的数论

大概是扩展 Lucas 定理 / Miller-Rabin 算法 / Pollard's Rho 算法 / 威尔逊定理 / 类欧几里得算法 / BSGS / 二次剩余

之后填坑吧(