OI 数学知识合集

最大公约数(gcd)

定义:给定两个数 \(a,b\)\(\gcd(a,b)\) 为最大的 \(d\) 使得 \(d\mid a\)\(d\mid b\)

求解方法:辗转相除法(欧几里得算法)

定理\(\boxed{\gcd(a,b)=\gcd(b,a \bmod b)}\)

证明

\(d=\gcd(a,b)\),则 \(d\mid a\)\(d\mid b\)。注意到 \(a\) 可以表示为 \(bk+r(k \in \mathbb{Z})\)

\(d\mid a\) 等价于 \(d\mid bk+r\),因为 \(d\mid b\) 所以 \(d\mid bk\),则 \(d\mid r\)。得证。

裴蜀定理

结论:对于不定方程 \(a_1x_1+a_2x_2+\cdots+a_nx_n=c\),其有解当且仅当 \(\gcd(a_1,a_2,\cdots,a_n)\mid c\)

证明

\(ax+by=c\) 推广是好证的,所以只需要证 \(ax+by=c\) 的情况。

设最小正元素为 \(x\),则只需证 \(x=\gcd(a,b)\),即 \(x\mid \gcd(a,b)\)\(\gcd(a,b)\mid x\)

首先 \(\gcd(a,b)\mid ax,\gcd(a,b)\mid by\),所以 \(\gcd(a,b)\mid x\)

\(a=kx+r\),其中 \(r\in[0,x)\)。则

\[r=a \bmod x \]

\[r=a-kx \]

\[r=a-k(ax'+by') \]

\[r=a(1-kx')-bky' \]

观察到形式一致,说明 \(r\) 也是 \(ax+by=c\) 的一个合法的 \(c\)。因为 \(x\) 是最小正元素,所以 \(r=0\)。得 \(x\mid a\)。同理,\(x\mid b\)。所以 \(x\mid \gcd(a,b)\)。得证。

之后使用数学归纳法,运用 \(\gcd(\gcd(a_1,a_2,\cdots,a_{n-1}),a_n)=\gcd(a_1,a_2,\cdots,a_n)\) 即可推广。

exgcd(扩展欧几里得)

其用途是求解不定方程 \(ax+by=c\) 的一组特解。利用欧几里得算法。

先考虑如何求解 \(ax+by=\gcd(a,b)\)

\(b=0\) 的时候,方程化为 \(ax=a\),容易得出 \(x=1\)。考虑如何向上递归求解原问题。

首先按欧几里得算法的思想可以列出:

\[\begin{cases} ax+by=\gcd(a,b)\\ bx'+(a\bmod b)y'=\gcd(b,a\bmod b)\\ \end{cases}\]

\(a \bmod b=a-\lfloor\frac{a}{b}\rfloor\times b\),改写:

\[bx'+(a-\lfloor\frac{a}{b}\rfloor\times b)y'=\gcd(b,a\bmod b) \]

根据 \(\gcd(a,b)=\gcd(b,a\bmod b)\)

\[ax+by=bx'+(a-\lfloor\frac{a}{b}\rfloor\times b)y' \]

\[ax+by=bx'+ay'-\lfloor\frac{a}{b}\rfloor\times by' \]

\[ax+by=ay'+b(x'-\lfloor\frac{a}{b}\rfloor \times y') \]

\[x=y',y=x'-\lfloor\frac{a}{b}\rfloor \times y' \]

按照原算法进行递归即可。

但是如果 \(c \not= \gcd(a,b)\),根据方程的性质,需要保证 \(\gcd(a,b)\mid c\)。求解也比较简单:

\(t=\frac{c}{\gcd(a,b)}\),原方程解为 \(x,y\),则 \(x_1^*=xt,y_1^*=yt\)

线性同余方程/二元一次不定方程

定义:形如 \(ax \equiv b \pmod p\) 的方程称为线性同余方程。

其等价于二元一次不定方程 \(ax+np=b\)。由裴蜀定理得,方程有解当且仅当 \(\gcd(a,n)\mid b\),直接使用 exgcd 求解不定方程即可。

但是这样求出的是一组特解,考虑通解:

将特解与原方程相减可得:

\[a(x_1^*-x_1)+b(y_1^*-y_1)=0 \]

则可以构造出 \(x_1^*-x_1=t\times\frac{b}{\gcd(a,b)},y_1^*-y_1=-t\times\frac{a}{\gcd(a,b)}\)

所以 \(\boxed{x_1=x_1^*-t\times\frac{b}{\gcd(a,b)},y_1=y_1^*+t\times\frac{a}{\gcd(a,b)}(t \in \mathbb{Z})}\)

欧拉函数

定义\(\varphi(p)\) 表示 \(1\)\(p-1\) 中与 \(p\) 互质的数的个数。

性质

  • 计算公式:设一个数能 \(x\) 分解为 \(p_1^{c_1}\times p_2^{c_2}\times \cdots \times p_n^{c_n}\),则 \(\boxed{\varphi(x)=x\prod_{i=1}^n(1-\frac{1}{p_i})}\)

    证明:考虑两个质数 \(p\)\(q\) 组成的数 \(pq\),与其互质的数的个数为 \(x-\frac{x}{p}-\frac{x}{q}+\frac{x}{pq}=x(1-\frac{1}{p})(1-\frac{1}{q})\),运用归纳法拓展。

  • 若存在互质整数 \(p,q\),则 \(\boxed{\varphi(pq)=\varphi(p)\varphi(q)}\)。这同时符合积性函数的定义:\(a,b\) 互质,\(f(ab)=f(a)f(b)\)。证明简单,将 \(\varphi(p)\)\(\varphi(q)\) 按定义列出即可。

  • 若质数 \(p\) 满足 \(p\mid n\)\(p^2\nmid n\)\(p\)\(\frac{n}{p}\) 互质。所以 \(\boxed{\varphi(n)=\varphi(\frac{n}{p})\varphi(p)=\varphi(\frac{n}{p})\times(p-1)}\)

  • 若质数 \(p\) 满足 \(p\mid n\)\(p^2 \mid n\)。按定义展开,得 \(\boxed{\varphi(n)=\varphi(\frac{n}{p})\times p}\)

  • \(\boxed{\sum_{d\mid n}\varphi(d)=n}\)

    证明:根据积性函数,可以将各个质数分开考虑。考虑一个质因子 \(p\),其在 \(n\) 中的出现形式为 \(1,p,p^2,\cdots,p^m\)。那么这些值的欧拉函数会形成一个比值为 \(p\) 的等比数列。求和再加一结果为 \(p^m\)。最后把各个质数乘起来,得证。

CRT

\[\begin{cases} x\equiv a_1 \pmod {p_1}\\ x\equiv a_2 \pmod {p_2}\\ \cdots\\ x\equiv a_n \pmod {p_n}\\ \end{cases} \]

保证 \(p_1,p_2 \cdots p_n\) 互质。

结论:设 \(t_i\) 为同余方程 \(p_i't_i\equiv 1 \pmod {p_1}\) 的解,\(P=\Pi p_i\)\(p_i'=\frac{P}{p_i}\)。则 \(\boxed{ans=\sum a_it_ip_i'}\)

证明

将方程组拆分:

\[\begin{cases} x\equiv a_1 \pmod {p_1}\\ x\equiv 0 \pmod {p_2}\\ \cdots\\ x\equiv 0 \pmod {p_n}\\ \end{cases} \begin{cases} x\equiv 0 \pmod {p_1}\\ x\equiv a_2 \pmod {p_2}\\ \cdots\\ x\equiv 0 \pmod {p_n}\\ \end{cases} \cdots \begin{cases} x\equiv 0 \pmod {p_1}\\ x\equiv 0 \pmod {p_2}\\ \cdots\\ x\equiv a_n \pmod {p_n}\\ \end{cases} \]

对于每一个方程组,则单个方程组解显然为 \(a_it_ip_i'\),由于余数具有可加性,所以所有方程的解为 \(\sum a_it_ip_i'\)

exCRT

与 CRT 唯一的区别是不保证 \(p_1,p_2\cdots p_n\) 互质。

此时 CRT 的结论就不能用了,因为不互质的情况下,上述拆分无法进行。所以需要其他方法进行求解。

注意到,如果能将两个同余方程合并为一个同余方程组,那么就可以类似地依次合并每一个方程,问题得解。考虑同余方程组:

\[\begin{cases} x \equiv a_1 \pmod {p_1}\\ x \equiv a_2 \pmod {p_2} \end{cases} \]

结论:这个方程组等价于 \(\boxed{x \equiv a_1-p_1\times k_1^*\pmod{\operatorname{lcm}(p1,p2)}}\),其中 \(k_1^*\) 为方程组 $$p_1k_1-p_2k_2=a_1-a_2$$ 的特解。

证明

可以将两个方程表示为不定方程:

\[\begin{cases} a_1=p_1k_1+x\\ a_2=p_2k_2+x \end{cases} \]

则可以推出

\[a_1-p_1k_1=a_2-p_2k_2 \]

\[p_1k_1-p_2k_2=a_1-a_2 \]

发现 \(a_1-a_2\) 是常数,\(p_1\)\(p_2\) 是已知的系数,可以用 exgcd 求解特解 \(k_1^*\)\(k_2^*\),则通解为

\[\begin{cases} k_1=k_1^*-t\times\frac{p_2}{\gcd(p_1,p_2)}\\ k_2=k_2^*+t\times\frac{p_1}{\gcd(p_1,p_2)}\\ \end{cases} \]

那么代入一下,

\[a_1=p_1(k_1^*-t\times\frac{p_2}{\gcd(p_1,p_2)})+x \]

\[a_1=p_1k_1^*-t\times\frac{p_1p_2}{\gcd(p_1,p_2)}+x \]

因为 \(ab=\gcd(a,b)\times \operatorname{lcm}(a,b)\)

\[a_1=p_1k_1^*-t\times\operatorname{lcm}(p_1,p_2)+x \]

\[x=a_1-p_1k_1^*+t\times\operatorname{lcm}(p_1,p_2) \]

再化回同余方程,则得证。

类似地,一直合并下去即可求解。

posted @ 2025-11-26 14:22  Network_Flow  阅读(8)  评论(0)    收藏  举报