关于GCD的证明

关于GCD欧几里得算法的证明过程:
证明一:
有两个数 a b
设这两个数的gcd(a,b) = g
那么假设其中比较大的数 a
a = k*b +r;
那么当我们对a求对b的最大公约数时
如果没有余数r 那么gcd 就等于b
那么现在有r了 所以gcd 的取值就取决于r了
因为现在我们来看r
r一定是个小于b的值
所以a和b的GCD问题就变成了我们现在求得就是r和b的GCD问题(r==0 那么就说明 GCD = b;r!=0 说明r对GCD有制约 需要考虑r和b的GCD )
那么问题回到了开始
现在的 a = b ; b = r;
做重复的操作
由于每次的r都会不断缩小
所以最后当我们再做a%b的时候为0 那么就说明我们得到了GCD = b;

那么为什么r一定是GCD的倍数
我们看
a=k1gcd
b=k2gcd
那么当较大的 a=k3b+r
r=k3b+k1b
可知 r=k3k2gcd+k1gcd
可知r一定是GCD的倍数

所以我们继续用r和b继续求解GCD
最终可以求得最后的GCD大小

证明二:
还有一种证明我们可以这样来
a = k*b +r;
r = a mod b
设d 为 a和b的一个公约数 那么
d|a d|b 设r是a对b的余数r = a- k*b
那么d|r
所以d也是(b,a%b)的公约数
d|b , d|r, 由于a = k*b+r
所以d也是a和b的公约数 所以这个d有普遍性
(a,b)和(b,a mod b) 的公约数是一样的
其最大公约数相等

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值