数论基本算法学习笔记

发布时间 2023-08-16 15:46:57作者: clapp

数论基本知识

裴蜀定理

不定方程\(a\cdot x+b\cdot y=c\)有解当且仅当\(c\)\(\operatorname{gcd}(a,b)\)的倍数。

证明

\[\begin{aligned} &设集合S=\left\{ \left\vert \mu\cdot a+\nu\cdot b \right\vert\mu,\nu \subseteq \mathbb{Z} \right\},那么集合中一定存在最小元\\ &令\gamma=\mu_0\cdot a+\nu_0\cdot b,假设\left\vert \gamma \right\vert 是S中的最小元,我们证明\left\vert \gamma \right\vert 就是a,b的最大公约数\\ &假设\delta|a,\delta|b\Rightarrow a=\delta\cdot \omicron,b=\delta\cdot \lambda\Rightarrow\gamma=\mu_0\cdot \omicron\cdot \delta+\nu_0\cdot \lambda\cdot \delta\Rightarrow\delta|\gamma\\ &假设\tau=\mu_1\cdot a+\nu_1\cdot b,将\tau对\gamma做带余除法,\tau=\omega\cdot \gamma+\xi,\left\vert \xi\right\vert< \left\vert \gamma\right\vert\\ &容易知道\xi也是形如\mu\cdot a+\nu\cdot b的整数,因此\xi只能是0,否则将与\left\vert \gamma\right\vert 是集合S中最小元素矛盾。\\ &因此有\gamma|\tau\Rightarrow,也就是说\gamma是集合S中所有数的约数,同时\gamma又是a,b的最大公约数,因此a\cdot x+b\cdot y=c有解可以得出\operatorname{gcd}(a,b)|c\\ &通过上面的证明我们知道a\cdot x+b\cdot y=\operatorname{gcd}(a,b)有解,所以\operatorname{gcd}(a,b)|c可以得出a\cdot x+b\cdot y=c有解。\\ &因此,不定方程a\cdot x+b\cdot y=c有解当且仅当c是\operatorname{gcd}(a,b)的倍数。\\ &裴蜀定理还可以推广到多元的情形。 \end{aligned} \]

扩展欧几里得算法

扩展欧几里得算法目的是求出\(a\cdot x+b\cdot y=\operatorname{gcd}(a,b)\)的一组特解。

\[\begin{aligned} &a\cdot x+b\cdot y=\operatorname{gcd}(a,b)=\operatorname{gcd}(b,a\%b)\\ &考虑方程b\cdot x+(a\%b)\cdot y=\operatorname{gcd}(b,a\%b),假设x_0,y_0是其一组特解\\ &那么b\cdot x_0+(a-\left\lfloor \frac{a}{b} \right\rfloor\cdot b)\cdot y_0=\operatorname{gcd}(b,a\%b)\\ &a\cdot y_0+(x_0-\left\lfloor \frac{a}{b} \right\rfloor\cdot y_0)\cdot b=\operatorname{gcd}(a,b)\\ &和原方程比较,可以得到x_1=y_0,y_1=x_0-\left\lfloor \frac{a}{b} \right\rfloor\cdot y_0是a\cdot x+b\cdot y=\operatorname{gcd}(a,b)的一组特解。 \end{aligned} \]

欧拉定理

欧拉函数\(\varphi(n)=\sum\limits_{i=1}^n[\operatorname{gcd}(i,n)=1]\)
计算式

\[\begin{aligned} &假设n的质因子分解形式为n=\prod_{k=1}^{m} p_k^{a_k}\\ &\varphi(n)=n-\sum\limits_{i=1}^m \frac{n}{p_i}+\sum\limits_{1\leq i<j\leq m}\frac{n}{p_i\cdot p_j}+ \cdots +(-1)^{m}\frac{n}{p_1p_2\cdots p_m}=n\cdot \prod_{k=1}^{m} \left( 1-\frac{1}{p_k} \right) \end{aligned} \]

欧拉定理\(\operatorname{gcd}(a,n)=1\Rightarrow a^{\varphi(n)}\equiv 1(\mod n)\)
证明

\[\begin{aligned} &令集合S=\left\{ x|1\leq x\leq n\wedge \operatorname{gcd}(n,x)=1 \right\}集合T=\left\{ a\cdot x|x \subseteq S \right\}\\ &则\forall b=a\cdot x \subseteq T,设b=k\cdot n+r,则\operatorname{gcd}(r,n)=1\\ &否则与\operatorname{gcd}(n,a)=1且\operatorname{gcd}(n,x)=1矛盾\\ &另外\forall b_1,b_2 \subseteq T,b_1=a\cdot x_1,b_2=a\cdot x_2且 x_1,x_2 \subseteq S,x_1\neq x_2满足b_1\not\equiv b_2(\mod n)\\ &否则假设a\cdot x_1\equiv a\cdot x_2(\mod n),由于a,n互质,x_1\equiv x_2(\mod n)与集合S的条件矛盾。\\ &因此有\prod_{x \subseteq S}x\equiv \prod_{x \subseteq T} x\equiv a^{\varphi(n)}\cdot \prod_{x \subseteq S}x\Rightarrow a^{\varphi(n)}\equiv 1(\mod n)\\ &PS:当n \subseteq prime时就变为费马小定理的形式,即p \subseteq prime,\operatorname{gcd}(a,p)=1\Rightarrow a^{p-1}\equiv 1(\mod p) \end{aligned} \]

扩展形式\(a^{n}\equiv\begin{cases} a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)}&,\operatorname{gcd}(a,m)=1\\ a^n&, \operatorname{gcd}(a,m)\neq 1\wedge n<\varphi(m)\\ a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}&,\operatorname{gcd}(a,m)\neq 1\wedge n\ge \varphi(m) \end{cases}(\mod m)\)
证明

\[\begin{aligned} &第一种情况等价于欧拉定理的基本形式,第二种情形是显然的,我们证明第三种情形\\ &首先我们证明若\operatorname{gcd}(p,q)=1,且a\equiv b(\mod p),a\equiv b(\mod q),则a\equiv b(\mod p\cdot q)\\ &a\equiv b(\mod p)\Rightarrow p|a-b,a-b=k_1\cdot p,同理,a-b=k_2\cdot q\Rightarrow p|k_2\cdot q\\ &而p,q互质\Rightarrow p|k_2\Rightarrow a-b|p\cdot q\Rightarrow a\equiv b(\mod p\cdot q)\\ &又由唯一分解定理,m=\prod_{k=1}^{t} p_k^{a_k}我们只需要证明a^n\equiv a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}(\mod p_k^{a_k})对每个k都成立\\ &若\operatorname{gcd}(a,p_k^{a_k})=1:\\ &a^{\varphi(p_k^{a_k})}\equiv 1(\mod p_k^{a_k}),而\varphi(p_k^{a_k})|\varphi(m),故a^n\equiv a^{\left\lfloor \frac{n}{\varphi(m)} \right\rfloor\cdot \varphi(m)+n{\kern 2pt}mod{\kern 2pt}\varphi(m)+\varphi(m)}\equiv a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}(\mod p_k^{a_k})\\ &若\operatorname{gcd}(a,p_k^{a_k})\neq 1:\\ &则p_k|a,又有n\ge\varphi(m)\ge\varphi(p_k^{a_k})\ge a_k\Rightarrow p_k^{a_k}|a^n\Rightarrow a^n\equiv 0(\mod p_k^{a_k})\\ &a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}\equiv 0(\mod p_k^{a_k})\Rightarrow a^n\equiv a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}(\mod p_k^{a_k})\\ &综上,a^n\equiv a^{n{\kern 2pt} mod {\kern 2pt}\varphi(m)+\varphi(m)}(\mod m) \end{aligned} \]

幂塔问题:求解\(2^{2^{2^{2^{\cdots}}}}mod{\kern 2pt} p\)

\[\begin{aligned} &设f(p)=2^{2^{2^{2^{\cdots}}}}mod{\kern 2pt} p,则f(p)=2^{f(\varphi(p))+\varphi(p)}\\ &这边2^{2^{2^{2^{\cdots}}}}始终大于p,因此总可以使用欧拉定理的第三种情形。\\ &若p为偶数则变为\varphi(p)后至少减半,p为奇数则变为\varphi(p)后会变成偶数,因此最多递归O(\log_2p)次 \end{aligned} \]

中国剩余定理

有同余方程组\(\begin{cases} x\equiv a_1(\mod b_1) \\ x\equiv a_2(\mod b_2)\\\cdots\\x\equiv a_n(\mod b_n) \end{cases}\)需要求出满足方程组的最小整数解。

\[\begin{aligned} &我们先考虑前两个方程,即x=k_1\cdot b_1+a_1=k_2\cdot b_2+a_2有解\\ &k_1\cdot b_1-k_2\cdot b_2=a_2-a_1,如果这个不定方程无解则原方程组无解,假设k_{10},k_{20}是一组特解\\ &k_1=k_{10}+\frac{b_2}{\operatorname{gcd}(b_1,b_2)}\cdot t,k_2=k_{20}+\frac{b_1}{\operatorname{gcd}(b_1,b_2)}\cdot t是方程组的通解。\\ &则x=k_1\cdot b_1+a_1=k_{10}\cdot b_1+\frac{b_1\cdot b_2}{\operatorname{gcd}(b_1,b_2)}\cdot t+a_1\\ &所以前两个方程和x\equiv k_{10}\cdot b_1+a_1(\mod \operatorname{lcm}(b_1,b_2))是等价的\\ &只要按以上方法把方程两两合并,就可以得到最终的解。 \end{aligned} \]

卢卡斯定理

定理\(\binom{n}{m}\equiv \binom{\left\lfloor \frac{n}{p} \right\rfloor}{\left\lfloor \frac{m}{p} \right\rfloor}\cdot \binom{n\% p}{m\%p}(\mod p)\)其中\(p\)是素数。

证明

\[\begin{aligned} &\binom{p}{a}\equiv \frac{p!}{a!\cdot (p-a)!}\equiv 0(\mod p),1<a<p\\ &设n=s\cdot p+t,m=q\cdot p+r\\ &(1+x)^n\equiv ((1+x)^p)^s\cdot (1+x)^t\equiv (1+x^p)^s\cdot (1+x)^t\equiv \sum\limits_{i=0}^s \binom{s}{i}\cdot x^{i\cdot p}\cdot \sum\limits_{j=0}^t\binom{t}{j}\cdot x^j\\ &x^m的系数只能在i=q,j=r时取到,所以\binom{n}{m}\equiv \binom{s}{q}\cdot \binom{t}{r}(\mod p) \end{aligned} \]

扩展形式:求解\(\binom{n}{m}\mod p\),其中\(p\)不是质数

\[\begin{aligned} &假设p=\prod_{k=1}^{m} p_k^{a_k},只需要求出\binom{n}{m}\mod p_k^{a_k}然后用中国剩余定理合并。\\ &\binom{n}{m}=\frac{n!}{m!\cdot (n-m)!},由于m!的逆元可能并不存在,所以我们先把p_k都提取出来,\binom{n}{m}=\frac{\frac{n!}{p_k^{f(n)}}}{\frac{m!}{p_k^{f(m)}}\cdot \frac{(n-m)!}{p_k^{f(n-m)}}}\cdot p_k^{f(n)-f(m)-f(n-m)}\\ &其中,f(n)表示n!中含有因子p_k的数量,接下来我们需要求\frac{n!}{p_k^{f(n)}}\\ &令g(n)=\frac{n!}{p_k^{f(n)}},则g(n)\equiv p_k^{\left\lfloor \frac{n}{p_k} \right\rfloor}\cdot g\left( \left\lfloor \frac{n}{p_k} \right\rfloor\right)\cdot \left( \prod\limits_{i=1\wedge p_k\not{\kern 2pt}|i}^{p_k^{a_k}-1} i \right)^{\left\lfloor \frac{n}{p_k^{a_k}} \right\rfloor}\cdot \prod_{i=\left\lfloor \frac{n}{p_k^{a_k}} \right\rfloor\cdot p_k^{a_k}+1\wedge p_k\not{\kern 2pt}|i}^{n} i\\ &\binom{n}{m}=\frac{g(n)}{g(m)\cdot g(n-m)}\cdot p_k^{f(n)-f(m)-f(n-m)},这样g(m),g(n-m)均与p_k^{a_k}互质,因此可以用exgcd求出逆元。\\ &最后f(n)=\left\lfloor \frac{n}{p_k} \right\rfloor+f\left(\left\lfloor \frac{n}{p_k} \right\rfloor\right) \end{aligned} \]

库默尔定理

定理\(\binom{n+m}{m}\)中含有质因子\(p\)的数量等于\(n+m\)\(p\)进制下进位的次数。
证明

\[\begin{aligned} &n!中含有因子p的数量等于\sum\limits_{i=1}^{\infty}\left\lfloor \frac{n}{p^i} \right\rfloor,因此\binom{n+m}{m}中含有因子p的数量等于\sum\limits_{i=1}^{\infty}\left\lfloor \frac{n+m}{p^i} \right\rfloor-\left\lfloor \frac{n}{p^i} \right\rfloor-\left\lfloor \frac{m}{p^i}\right\rfloor\\ &而\left\lfloor \frac{n}{p^i} \right\rfloor就相当于将n在p进制下右移i位,\left\lfloor \frac{n+m}{p^i} \right\rfloor-\left\lfloor \frac{n}{p^i} \right\rfloor-\left\lfloor \frac{m}{p^i}\right\rfloor 只有在n+m在p进制下在第i位发生进位才会恰好产生1的贡献。 \end{aligned} \]

二次剩余

定义:设\(m\)是正整数,\(a\)是整数,若\(\operatorname{gcd}(a,m)=1\),且同余方程\(x^2\equiv a(\mod m)\)有解,则称\(a\)\(m\)的二次剩余。若同余方程\(x^2\equiv a(\mod m)\)无解,则称\(a\)\(m\)的二次非剩余。
引理1:设\(p\)是奇素数,\(a\)是不被\(p\)整除的整数,则同余方程\(x^2\equiv a(\mod p)\)或者无解,或者有两个模\(p\)不同余的解。
证明

\[\begin{aligned} &若x^2\equiv a(\mod p)有解,设x=x_0,则x=-x_0是不同余的一个解,(-x_0)^2=x_0^2\equiv a(\mod p)\\ &同时x_0\not\equiv -x_0(\mod p)否则,p|2或p|x_0这是不可能的。\\ &假设x_0,x_1均是x^2\equiv a(\mod p)的解\Rightarrow x_0^2\equiv x_1^2\Rightarrow p|x_0+x_1或p|x_0-x_1\Rightarrow x_1\equiv-x_0或x_1\equiv x_0(\mod p) \end{aligned} \]

定理1:若\(p\)是奇素数,那么在整数\(1,2,3, \ldots ,p-1\)中,\(p\)的二次剩余恰好有\(\frac{p-1}{2}\)个,二次非剩余恰好有\(\frac{p-1}{2}\)个。
证明

\[\begin{aligned} &考虑1^2,2^{2}, \ldots ,(p-1)^{2}这p-1个正整数,他们均是模p的二次剩余,且1是x^2\equiv 1^2(\mod p)的一个解,2是x^2\equiv 2^2(\mod p)的一个解\cdots\\ &由引理1,x^2\equiv a(\mod p)或者无解或者有两个模p不同余的解,所以1,2, \ldots ,p-1中p的二次剩余恰好\frac{p-1}{2}个,剩下\frac{p-1}{2}个数是p的二次非剩余。 \end{aligned} \]

勒让德符号:设\(p\)是奇素数,整数\(a\)不被\(p\)整除,勒让德符号定义为\(\left( \frac{a}{p} \right) =\begin{cases} 1&,若a是p的二次剩余 \\ -1&,若a是p的二次非剩余 \end{cases}\)

欧拉判别法:设\(p\)是奇素数,正整数\(a\)不被\(p\)整除,则\(\left( \frac{a}{p} \right) \equiv a^{\frac{p-1}{2}}(\mod p)\)
证明

\[\begin{aligned} &假设\left( \frac{a}{p} \right) =1\Rightarrow 同余方程x^2\equiv a(\mod p)有解,假设x_0是其一个解,则a^{\frac{p-1}{2}}\equiv (x_0^2)^{\frac{p-1}{2}}\equiv x_0^{p-1}\equiv 1(\mod p)\\ &假设\left( \frac{a}{p} \right) =-1,对每个(i,p)=1的正整数i,都存在一个正整数j满足,i\cdot j\equiv a(\mod p),又由于同余方程x^2\equiv a(\mod p)无解,i\neq j\\ &因此我们可以将1,2, \ldots ,p-1分成\frac{p-1}{2}组,每一组乘积为a,将他们相乘,得到(p-1)!\equiv a^{\frac{p-1}{2}}\equiv -1(\mod p)\\ &综上,\left( \frac{a}{p} \right) \equiv a^{\frac{p-1}{2}}(\mod p)\\ &PS:欧拉判别法可以导出,\left( \frac{a}{p} \right) \cdot \left( \frac{b}{p} \right) \equiv \left( \frac{a\cdot b}{p} \right) (\mod p),勒让德符号的积性。 \end{aligned} \]

Cipolla算法

\[\begin{aligned} &Cipolla算法用于求解同余方程x^2\equiv n(\mod p),其中p是奇素数,\operatorname{gcd}(n,p)=1\\ &我们找到整数r,使得r^2-n是模p的二次非剩余,由定理1我们知道,有一半的数是p的二次非剩余,因此找r只需要随机即可。\\ &令i^2\equiv r^2-n(\mod p),但r^2-n是p二次非剩余,并不存在整数i满足上面的同余式,因此我们模仿实数扩充至复数\\ &假定存在这样一种数,他不是整数,但满足i^2\equiv r^2-n(\mod p)\\ &那么i^p\equiv i\cdot (i^2)^{\frac{p-1}{2}}\equiv -i(\mod p),此外有(a+b)^p\equiv a^p+b^p(\mod p)\\ &所以(r+i)^{p+1}\equiv (r^p+i^p)\cdot (r+i)\equiv (r-i)\cdot (r+i)\equiv n(\mod p),因此(r+i)^{\frac{p+1}{2}}就是同余方程x^2\equiv n(\mod p)的一个解\\ &但我们要求的是整数域下的解,所以我们来证明(r+i)^{\frac{p+1}{2}}的虚部为0\\ &假设存在整数A,B满足(A+B\cdot i)^2\equiv n(\mod p),B\not\equiv 0(\mod p)\\ &那么A^2+2\cdot A\cdot B\cdot i+(B\cdot i)^2\equiv n(\mod p)\Rightarrow A=0\Rightarrow i^2\equiv n\cdot B^{-2}\\ &B^2是p的二次剩余,因此B^{-2}也是p的二次剩余,而n是p的二次剩余,所以B^{-2}\cdot n是p的二次剩余,这与i^2是p的二次非剩余矛盾。\\ &所以我们得出(r+i)^{\frac{p+1}{2}}就是同余方程x^2\equiv n(\mod p)的一个整数解。 \end{aligned} \]

一些例子

  • 求解\(a^u\equiv u(\mod m)\),要求\(0\leq u\leq 10^{18}\)\(T\)组数据,\(T\leq 10^3,1\leq a<m\leq 10^9\)

\[\begin{aligned} &\text{由扩展欧拉定理}u\equiv a^u\equiv a^c(\mod m),c \subseteq [\varphi(m),2\varphi(m)),\begin{cases} u\equiv a^c(\mod m)& \\ u\equiv c(\mod \varphi(m))& \end{cases}\\ &\text{即}a^c+k_1\cdot m=c+k_2\cdot \varphi(m),\text{此方程有解的充要条件是}a^c\equiv c(\mod \operatorname{gcd}(m,\varphi(m)))\\ &\text{因此考虑递归的求解子问题,递归到最后}\operatorname{gcd}\text{一定会变成}1\text{此时方程显然有解} \end{aligned} \]

  • 求解同余方程组\(x^{p_i}\equiv q_i(\mod n)\),其中\(n=\prod\limits_{k=1}^{t} p_i\),\(p_i\)为两两不同的质数,无解输出\(-1\)\(n\leq 10^{18},0\leq q_i<n\)

\[\begin{aligned} &x^{p_i}\equiv q_i(\mod n)\text{的一个必要条件是}x^{p_i}\equiv q_i(\mod p_i)\Leftrightarrow x\equiv q_i(\mod p_i)\\ &\text{接下来直接用中国剩余定理合并即可解出一个}x\\ &\text{而这个}x\text{是由必要条件得到的,因此只需要代回检验是否满足原方程组,若是则他就是解,否则无解} \end{aligned} \]

  • \(n\)种颜色的球,其中第 \(i\) 种颜色的球共有 \(a_i\) 个,同色的球无法区分。定义第 \(l \sim r\) 种颜色的混乱度 \(f(l, r)\) 为:将第 \(l \sim r\) 种颜色的所有球排成一排,总共的方案数对 \(p\) 取模后的值。求$ \sum\limits_{l=1}^n \sum\limits_{r=l}^n f(l, r) ,1 \le n \le 5 \times 10^5$,\(0 \le a_i \le 10^{18}\)\(p \in \{2,3,5,7\}\)

\[\begin{aligned} &\text{令}sum_{l,r}=\sum\limits_{i=l}^ra_i\Rightarrow f(l,r)=\binom{sum_{l,r}}{a_r}\cdot f(l,r-1),f(l,l)=1\\ &\Rightarrow f(l,r)=\prod_{i=l}^{r}\binom{sum_{l,i}}{a_i} \\ &\text{由于模数很小,会有很多区间的值为}0,\text{考虑什么时候区间的值为}0\\ &\text{由库默尔定理}a_l, \ldots ,a_r\text{在}p\text{进制下做加法发生进位时}f(l,r)=0,\text{且}f(l,r)=0\Rightarrow f(l,r+1)=0\\ &\text{我们可以固定左端点,找到右侧第一个使得区间值为}0\text{的}r,\text{暴力计算}f(l,l)\sim f(l,r)\\ &\text{由于每次至少会把}sum_{l,r}1\text{位的值加}1,\text{对于一个固定的左端点,暴力计算的次数不超过}O(p\cdot \log_p{w}) \end{aligned} \]