欧几里德算法的证明

在学习算法的过程中,与欧几里德算法来了一次邂逅,于是又去学习了一下。。。
欧几里德算法又称辗转相除法,用于计算两个数的最大公约数。
定理:

设a=qb+r,其中a,b,q,r都是正整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b, a(modb))

在网上看到的证明方法大多是这样:

a可以表示成a = kb + r(a,b,k,r皆为正整数),则r = a mod b
假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。
而r = a - kb,两边同时除以d,r/d=a/d-kb/d=m,等式左边可知m为整数,因此d|r
因此d也是(b,a mod b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。

不过对于这个证明过程的最后两句结论有个疑问:
“因此d也是(b,a mod b)的公约数”这句没什么问题,但是同样也可以得到“d也是(a,a mod b)的公约数”。
而这个结论“因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等”就完全不知道是怎么得出的。。。

后面和老师沟通了一下,其实这个证明过程是有问题的。
“因此d也是(b,a mod b)的公约数”这个结论并不能得出“因此(a,b)和(b,a mod b)的公约数是一样的”。只能得出“如果d是(a,b)的公约数,那么也d是(b,a mod b)的公约数”的结论,如果d是(a,b)的最大公约数,但d不一定是(b,a mod b)的最大公约数。所以并不能证明“(a,b)和(b,a mod b)的公约数是一样的”。

完整的证明过程应该是这样:

aa=kb+rabkra>b
r=amodb
da,b便d=(a,b)
d|a,d|babd
r=akb
d
r/d=a/dkb/d
d|a,d|bd|r

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值