扩展欧几里德算法

让我纠结了很久的扩展欧几里德算法今天终于解决了!前一阵进行数学专题时并没有弄懂,当时我还用枚举写了个求逆元的函数……凑合着当时能用。不过这个没有弄懂的扩展欧几里德还是我的心结。今天花了点儿时间看看经典的《算法导论》,通过比较欧几里得和扩展欧几里得才发现两者其实都是一种迭代的思想,通过最大公约数的不变性质,最终得到结果;

对于解决方程:

ax+by=GCD(a,b)

 

想将算法导论的伪代码贴上

Extended-Euclid(a,b)

1 if(b==0)

2 then return (a,1,0)

3 (d',x',y')<---Extended-Euclid(b,a%b)

4 (d,x,y)<---(d',y',x'-a/b*y')

5 return (d,x,y)

我们知道GCD(a,b)==GCD(b,a%b);这是我们进行迭代求解建立等式的最根本的条件;

对于ax+by=GCD(a,b)==GCD(b,a%b)=bx‘+(a%b)y’

求x'和y'的过程还是扩展欧几里得算法,这就形成了迭代,同欧几里得算法一样当整除时迭代便终止从而证明了正确性!

现在贴上代码

但两个数互质时便求的是乘法逆元,在求一次同余方程组,或者应用中国剩余定理时便有用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值