与数论的厮守05:gcd(a,b)=gcd(b,a mod b)的证明

本文深入探讨了欧几里得算法的数学证明过程,通过设定变量和代数运算,展示了如何从任意两个整数出发求得它们的最大公约数。文章提供了直观的数学推导,辅以简洁的代码实现,帮助读者理解并掌握这一经典算法。

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

\[ 设c=gcd(a,b),那么a可以表示为mc,b可以表示为nc的形式。然后令a=kb+r,那么我们就\\ 只需要证明gcd(b,r)=c即可。{\because}r=a-kb=mc-knc,{\therefore}gcd(b,r)=gcd(nc,mc-knc)\\ =gcd(nc,(m-kn)c),所以我们只需要证gcd(n,m-kn)=1即可。\\ 设n=xd,m-kn=yd,那么m=kn+yd=kxd+yd,进而a=(kx+y)cd,b=xcd\\ ,于是gcd(a,b)就可以表示为gcd((kx+y)cd,xcd)=cd,如果要让它等于c,那么d=1,即\\ gcd(n,m-kn)=1。 \]

放上模板代码:
int gcd(int a,int b){
    if(!b) return a;
    return gcd(b,a%b);
}
//压行之后:
int gcd(int a,int b){ return b?gcd(b,a%b):a; }

转载于:https://www.cnblogs.com/akura/p/11088720.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值