扩展欧几里得详解
发布日期:2021-05-09 04:21:08 浏览次数:18 分类:博客文章

本文共 1940 字,大约阅读时间需要 6 分钟。

\(a\)\(b\)的最大公约数可以根据欧几里得算法求解,得到了\(GCD\)。那么,必定存在\(x\)\(y\),使得\(a*x+b*y=GCD\)。一个方程两个未知数,这是一个不定方程,存在多组解。欧几里得算法,即辗转相除算法停止的状态是:\(a=GCD,b=0\)。由此,我们可以联想到扩展欧几里得的最终状态上,即有\(a=GCD,b=0\)。那么此时\(x\)\(y\)该为何值呢?\(x\)必定等于\(1\),因为后一项不论

\(y\)取何值\(b*y\)已经等于\(0\)了。但是,我们还是要让\(y=0\)。因为可以通过欧几里得算法可以想到这是一个递归的过程,那么\(x\)\(y\)也是递归的,回调的时候为了方便计算,同时出于最简化的目的,这里的\(y\)也就等于\(0\)了。那么就得到了:

\[a*1+b*0=GCD\]

假设刚开始的计算状态是:

\[a*x+b*y=GCD\tag{1}\]

作为等式1

那么按照欧几里得算法的思想,下一步的状态就应该是:

\[b*x_1+(a\%b)y_1=GCD\tag{2}\]

作为等式2

然后一直递归直到\(a=GCD,b=0\)。然后在回调,假设已经得到了\(x_1\)\(y_1\)。那么我们就可以得到等式1与等式2之间的计算关系。因为:

\[a\%b=a-(a/b)*b\tag{3}\]

作为等式3

代入等式2就有:

\[\begin{aligned}GCD&=b*x_1+(a-\frac{a}{b}*b)*y_1\\&=b*x_1+a*y_1-\frac{a}{b}*b*y_1\\&=a*y_1+b*(x_1-\frac{a}{b}*y_1)\end{aligned}\]

即有:

\[a*y_1+b*(x_1-\frac{a}{b}*y_1)=GCD\tag{4}\]

作为等式4

等式1相互对比可得到:

\[\left\{\begin{aligned}x&=y_1\\y&=x_1-\frac{a}{b}*y_1\end{aligned}\tag{5}\right.\]

则这两个式子便是递推关系了。

给出代码:

Extended_Euclid(ll a,ll b,ll &x,ll &y)//ll long long{	int d;	if(b==0)	{		x=1;y=0;//最终状态		return a;	}	d=Extended_Euclid(b,a%b,x,y);	ll temp=x;//递推关系	x=y;	y=temp-a/b*y;	return d;//返回值依旧还是GCD}

那么扩展欧几里得有什么用呢?可以用来求乘法逆元。

对于下面用到的同余基础知识不清楚的,可以去看看:同余关系及其部分基本性质

什么就做乘法逆元?
逆元 :

\[(b/a)mod(m)=(b*x)mod(m)\]

\(x\)表示\(a\)的逆元。并且\(a*x ≡ 1 mod (m )\)注意:只有当\(a\)\(m\)互质的时候才存在逆元。\(x\)叫做\(a\)关于\(n\)的乘法逆元。

因为

\[(b/a) mod (m) = (b * x) mod (m)\]

那么我们总可以找到\(p,q\),使得

\[b/a-mp=bx-mq\]

两边同乘\(a/b\),就可以得到\(1-m(ap/b)=ax-m(aq/b)\)。就有\(a*x ≡ 1 mod (m)\)成立。等同于式子:

\[a*x+m*y=1\tag{6}\]

作为等式6

为什么要互质才能存在解?因为不互质的话,无论如何取值,最小差值为\(2\),怎么可能让左边的\(2\)等于右边的\(1\)。所以互质情况下才会存在解。就是说\(GCD(a,m)!=1\)的时候无解。这也是\(a*x+b*y=c\)有解的充要条件:\(c\%GCD(a,b)=0\)。约掉之后就变为了最简的形式,保证互质。
例:\(5\)关于模\(14\)的乘法逆元是多少?

\[\begin{aligned}5*x&≡1(mod14)\\14&=5*2+4\\5&=4*1+1\end{aligned}\]

所以:

\[1=5-4=5-(14-5*2)=3*5-14\]

得到:\(5\)关于模\(14\)的乘法逆元是\(3\)

理解这个过程有助于理解上述代码里面的回调过程。
上面已经说了求乘法逆元相当于等式\(5\)中的\(x\)。那么这一切就变得简单了,代码依旧是上一段代码,只不过\(GCD=1\)。因为传参的时候&x,所以回调完成的时候就可以得到乘法逆元了。
问题来了,求乘法逆元有什么用处?哈哈,中国剩余定理里面可是用到了!

上一篇:玲珑学院-ACM比赛1014 - Absolute Defeat
下一篇:中国剩余定理(孙子定理)及实现----原理详解

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月26日 08时28分36秒