欧几里得算法 详细证明

本文详细阐述了欧几里得算法,证明了当a>b时,a和b的最大公约数(gcd)等于b和a-kb(即r)的最大公约数。通过假设d是a和b的公约数,进而推导出d也是b和r的公约数,最终得出(a,b)和(b,r)的最大公约数相等的结论。" 123993673,13302643,VMware深度系统安装指南,"['虚拟化技术', '系统安装', 'VMware教程']
摘要由CSDN通过智能技术生成

简述:a>b gcd表示最大公约数
试图证明 a = kb + r 且 gcd(a,b)==gcd(b,r)
a可以表示成a = kb + r ---------a,b,k,r皆为正整数
假设d是a,b的一个公约数,记作d|a,d|b,即a和b都可以被d整除。跳转至1、
而r = a - kb,两边同时除以d,r/d=a/d-kb/d,由等式右边可知m=r/d为整数,因此d|r因此d也是b,r的公约数。跳转至2、
因(a,b)和(b,r)的公约数相等,则其最大公约数也相等,得证。跳转至3、

     1、 证明r是整数 
                          a/d-bq/d=int
                        则r/d=int
     2、  证明有相同公约数
     以上显然得出  a,b与b,r 有相同公约数d
     3、证明相同公约数是最大的 
     我们假设d不是最大公约数,  a,b 有公约数e>d
                a/e-bq/e=int  =>   r/e=int
                显然矛盾    
                         则e==d  d是最大公约数
     4、推导到广泛意义的最大公约数
      令a>=b     r0=a、r1=b
                            r0=(((rn*qn*qn-1+rn)qn-2).....r3)q1+r2    -----------1
                           为方便对比  
                           a  =   bq            
欧几里得算法,也称为辗转相除法,用于求两个正整数的最大公约数(GCD)。该算法的基本步骤是:用较大的数除以较小的数,然后用余数替换原来较小的数,继续这个过程直到余数为零,此时较小的数就是两数的最大公约数。 欧几里得算法的时间复杂度可以用强归纳法来证明: 1. **基本情况**:当输入的两个数之一为0时,最大公约数显然是另一个非零数,所以时间复杂度为O(1)。这是递归的基础情况。 2. **归纳假设**:我们假设对于所有小于n的两个正整数a和b,欧几里得算法能在常数时间内完成,即时间复杂度是O(1),这里的n是一个大于0的正整数。 3. **归纳步骤**:考虑两个数a和n(n > a),通过一次除法操作得到余数r(a = q * n + r,其中q是商,r是非负的),这时我们需要对a和n-r再次应用欧几里得算法。因为n-r显然小于n,且a和n-r之间的大小关系不变(仍是n > a),所以我们可以在相同的时间复杂度内完成下一轮计算,直到余数为0。 4. **结论**:由于每次迭代都只增加了一次除法和可能的减法操作,而且都是常数时间,因此整个算法的运行时间与原始输入的较大数n线性相关,即时间复杂度为O(n)。 总结来说,虽然看起来每一步都要进行一些运算,但由于每次迭代都能将问题规模缩小到原来的约一半,加上基础情况的存在,最终我们可以得出欧几里得算法的整体时间复杂度为O(log min(a, b)),这是因为最小的数最多需要log(min(a, b))步才能变成0。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值