数学知识复习

前言

各种公式已经忘得差不多了,于是写篇博客记录一下公式以及证明和拓展。

Exgcd 拓展欧几里得算法

根据裴蜀定理,对于函数 \(f(x,y)=ax+by \ (a,b,c,d \in \mathbb{Z})\),若 \(a,b\) 不全为零,则有 \(\gcd(a,b) | f(x,y)\)

也就是说,\(\gcd(x,y)\)\(f(x,y)\) 的最小正整数值。

而 Exgcd 就是用来求出不定方程 \(ax+by=\gcd(a,b) \ (a,b,x,y \in \mathbb{Z})\) 的一组可行整数解的。

下面是推导过程,以下 \(a,b,x_1,y_1,x_2,y_2\) 均为整数,\(a,b\) 不全为 \(0\)

现有方程:

\[ax_1+by_1=\gcd(a,b) \]

构造方程:

\[bx_2+(a \ mod \ b)y_2=\gcd(b,a \ mod \ b) \]

由于 \(\gcd(a,b)=\gcd(b,a \ mod \ b)\),所以 \(ax_1+by_1=bx_2+(a \ mod \ b)y_2\)

因为 \(a \ mod \ b = a-b \cdot \lfloor \frac{a}{b} \rfloor\),所以 \(ax_1+by_1=bx_2+(a-b \cdot \lfloor \frac{a}{b} \rfloor)y_2\)

移项有:

\[ax_1+by_1=ay_2+b(x_2-\lfloor \frac{a}{b} \rfloor y_2) \]

由于我们只求可行解,式子左右常系数相等,所以直接迭代后 \(x_1 \gets y_2,y_1 \gets x_2-\lfloor \frac{a}{b} \rfloor y_2\) 即可。

\(b=0\) 时,\(x=1,y=0\)

EXCRT 拓展中国剩余定理

解线性同余方程组:

\[\begin{equation} \begin{cases} x \equiv a_1 \ ( mod \ m_1)\\ x \equiv a_2 \ ( mod \ m_2)\\ \cdots \\ x \equiv a_n \ ( mod \ m_n) \end{cases} \end{equation} \]

我们知道中国剩余定理只能处理模数之间两两互质的情况,EXCRT 就是处理这样的问题的,实际上,其思路比一般的 CRT 还要简单。

EXCRT 是将方程两两合并的过程,考虑方程组:

\[\begin{equation} \begin{cases} x \equiv a_1 \ ( mod \ m_1)\\ x \equiv a_2 \ ( mod \ m_2)\\ \end{cases} \end{equation} \]

将其写成带余除法的形式:

\[\begin{equation} \begin{cases} x = m_1 p + a_1\\ x = m_2 q + a_2\\ \end{cases} \end{equation} \]

联立有:

\[m_1p+a_1=m_2q+a_2 \]

移项有:

\[m_1p-m_2q=a_2-a_1 \]

我们发现这个东西很像 Exgcd 的形式,考虑用 Exgcd 求出其解 \(p_0,q_0\)

\[p=p_0 \times \frac{a_2-a_1}{\gcd(m_1,m_2)} \]

带入上述方程组:

\[x = m_1 p_0 \times \frac{a_2-a_1}{\gcd(m_1,m_2)} + a_1 \]

于是可以将原方程组合并为:

\[x \equiv m_1 p_0 \times \frac{a_2-a_1}{\gcd(m_1,m_2)} + a_1 \ (mod \ lcm(m_1,m_2)) \]

合并 \(n-1\) 次即可得到原线性同余方程组的解。

Lucas 定理

对于 \(p \in \mathcal{P}\),记 \(x = \sum_{i=0}^{\infty} a_ip^i\)\(y = \sum_{i=0}^{\infty} b_ip^i\),则有:

\[\binom{x}{y} = \sum_{i=0}^{\infty} \binom{a_i}{b_i} \]

证明在《组合数学》上,还挺有意思的,等有时间了来补。

Miller-Rabin 素性测试

用于判断较大数是否为素数。

费马小定理

内容

\(\forall p \in \mathcal{P} , a \in[1,p-1]\),有 \(a^{p-1} \equiv 1 \pmod{ p}\)

证明

定理等同于证明 \(a^p \equiv a \pmod{p}\) 成立。

考虑数学归纳法,\(a=1\) 显然成立。

\(a=n\) 成立,考虑 \(a=n+1\) 的情形,有 \(n^{p} \equiv n \pmod{p}\),考虑式子 $(n+1)^{p} = \sum_{i=0}^{p} \binom{p}{i} n^i $

对于 \(\forall i \in [1,p-1]\),其 \(\binom{p}{i}\) 中一定有 \(p\) 因子,所以忽略,即原式子为 \((n+1)^p = 1 + n^p = n +1\),即 \(a=n+1\) 时定理成立。


二次探测定理

内容

\(\forall p \in \mathcal{P},x \in [0,p-1],x^2 \equiv 1 \pmod{p}\) 的解只有 \(x=1\)\(x=p-1\)

证明

移项得到 \(x^2 -1 \equiv 0 \pmod{p}\),也就是 \((x-1)(x+1) \equiv 0 \pmod{p}\)

因为 \(p\in \mathcal{P}\),所以在 \(x \in [2,p-2]\)\(x-1 , x+1\) 均不为 \(p\) 倍数,即乘起来也不为 \(p\) 的倍数。


回归算法,我们考虑用上述两个定理判定素数,考虑需要判定的数为 \(x\),使用(可以是随机) \(t\) 来判定。

  1. \(x<1\)\(x \equiv 0 \pmod{2}\) 的情况可以特判。

  2. 考虑将 \(x-1\) 拆解成 \(m \times 2^p\) 的形式,并计算出 \(t^m\),如果 \(t^m = 1\) 则直接通过素性测试,可以再次随机一个数来检测。

  3. 如果 \(t^m \ne 1\),则我们将其不断平方,我们知道,如果要满足费马小定理则一定在某一时刻值为 \(1\),则后面平方也是 \(1\),但由于 \(t^m \ne 1\),所以我们要产生一个 \(1\) 只能靠 \(x-1\) 来产生,不然从其它值平方得到 \(1\),其说明 \(x^2 \equiv 1 \pmod{p}\) 有其它解,不满足二次探测定理,所以我们的判断依据是是否出现一个时刻其值为 \(x-1\),若出现则通过素性测试。

最后,取 \(t \in \{ 2,3,5,7,11,13,17,19\}\) 就能保证在 long long 范围内正确了。

EOF.

posted @ 2025-06-09 16:59  cike_bilibili  阅读(7)  评论(0)    收藏  举报