详解扩展欧几里得

博客详细介绍了扩展欧几里得算法,包括辗转相除法的概念和如何转化为扩展欧几里得形式。通过数学推导得出求解ax + by = gcd(x, y)的解,并提供了C++代码实现。" 89741000,8505810,稀疏矩阵快速转置法,"['数据结构', '算法', '矩阵运算']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详解扩展欧几里得

首先,如果你想明白扩展欧几里得是什么,你要先明白辗转相除法(也就是朴素基本的欧几里得算法)

辗转相除法

辗转相除法的方法是:给定两个数 a 与 b a与b ab,取较大的数除以较小的数,然后用其余数除以除数,直到最后的结果为0。这是 a 与 b a与b ab求最大公约数的一种简便算法。

例如:取两数30和17,

第一次辗转相除:30%17=13 13/17=0…13
第二次辗转相除:17%13=4 4/13=0…4
第三次辗转相除:13%4=1 1/4=0…1
第四次辗转相除:4%1=0

此时1为30与17最大公约数

扩展欧几里得

而扩展欧几里得就是增加了一些有趣的东西
就是求一个简单 的式子

a x + b y = g c d ( x , y ) ax+by=gcd(x,y) ax+by=gcd(x,y),看起来是不是很像贝祖等式?

话说回来:
根据辗转相除法我们可以得知
g c d ( x , y ) = g c d ( y , x m o d y ) gcd(x,y)=gcd(y,x \quad mod \quad y) gcd(x,y)=gcd(y,xmody)
即上文介绍内容转化代码

同时 还有一个等式 即为 a y + ( x m o d y ) × b = g c d ( x m o d

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值