数学知识复习
前言
各种公式已经忘得差不多了,于是写篇博客记录一下公式以及证明和拓展。
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\):
现有方程:
构造方程:
由于 \(\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\)
移项有:
由于我们只求可行解,式子左右常系数相等,所以直接迭代后 \(x_1 \gets y_2,y_1 \gets x_2-\lfloor \frac{a}{b} \rfloor y_2\) 即可。
当 \(b=0\) 时,\(x=1,y=0\)。
EXCRT 拓展中国剩余定理
解线性同余方程组:
我们知道中国剩余定理只能处理模数之间两两互质的情况,EXCRT 就是处理这样的问题的,实际上,其思路比一般的 CRT 还要简单。
EXCRT 是将方程两两合并的过程,考虑方程组:
将其写成带余除法的形式:
联立有:
移项有:
我们发现这个东西很像 Exgcd 的形式,考虑用 Exgcd 求出其解 \(p_0,q_0\)。
带入上述方程组:
于是可以将原方程组合并为:
合并 \(n-1\) 次即可得到原线性同余方程组的解。
Lucas 定理
对于 \(p \in \mathcal{P}\),记 \(x = \sum_{i=0}^{\infty} a_ip^i\),\(y = \sum_{i=0}^{\infty} b_ip^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\) 来判定。
-
若 \(x<1\) 或 \(x \equiv 0 \pmod{2}\) 的情况可以特判。
-
考虑将 \(x-1\) 拆解成 \(m \times 2^p\) 的形式,并计算出 \(t^m\),如果 \(t^m = 1\) 则直接通过素性测试,可以再次随机一个数来检测。
-
如果 \(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
范围内正确了。