【整理】辗转相除法求最大公约数算法证明

描述:关于辗转相除法的具体实现在这里就不具体说明了,本文要记录的是辗转相除法应用于求最大公约数的算法证明过程。

假设:

  1. 求m和n的最大公约数。
  2. a,b分别是m除以n的商和余数,即m=na+b。
  3. gcd(m,n)表示m和n的最大公约数。

求证:gcd(m,n)=gcd(n,b)

证明:

设c=gcd(m,n), d=gcd(n,b)

1. ∵c为m和n的公约数

∴m能被c整除,n也能被c整除

∴na也能被c整除  参照推论一

∴m-na也能被c整除(即b能c整除)  参照推论二

∴c为n和b的公约数

∵d为n和b的最大公约数

∴c≤d

2. 同理可证 d≤c

∵d为n和b的公约数

∴n能被d整除,b也能被d整除

∴na也能被d整除  参照推论一

∴na+b也能被d整除(即m能d整除)  参照推论二

∴d为m和n的公约数

∵c为m和n的最大公约数

∴d≤c

综上所述:c=d,即gcd(m,n)=gcd(n,r)

 

        推论一若a能被b整除(a=tb),则如果k为正整数,则ka也能被b整除(ka=ktb)。

        推论二若a能被c整除,b也能被c整除,则(a±b)也能被c整除。

转载于:https://www.cnblogs.com/zwffff/archive/2010/08/25/1808178.html