辗转相除法(欧几里得算法)

本文介绍了欧几里得算法(辗转相除法)用于求解最大公约数的基本原理,并探讨了如何通过扩展欧几里得算法求解线性同余方程。通过递归定义,解释了算法如何从最终状态反推至初始状态,展示了求解过程中的数学关系,为理解和应用该算法提供了清晰的思路。
摘要由CSDN通过智能技术生成

1.普通辗转相除法求最大公约数

int gcd(int a,int b)
{
  if(b==0) return a;
  return gcd(b,a%b);
}

2.扩展欧几里得算法

求整数x和y使得ax+by=1

可以发现如果gcd(a,b)!=1;无解

如果gcd(a,b)==1,就可以用扩展欧几里得算法来求解:即ax+by=gcd(a,b),

设int extgcd(int a ,int b,int &x,int &y)是求解方程的函数,其返回值是gcd(a,b).与gcd一样,我们可以递归定义extgcd。

:欧几里德算法停止的状态是: a= gcd , b = 0 ,那么,这是否能给我们求解 x y 提供一种思路呢?因为,这时候,只要 a = gcd 的系数是 1 ,那么只要 b 的系数是 0 或者其他值(无所谓是多少,反正任何数乘以 0 都等于 0 但是a 的系数一定要是 1&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值