辗转相除法求得最大公约数的证明


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

假设:

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

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

证明:

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

1.cmn的公约数

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

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

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

cnb的公约数

dnb的最大公约数

cd

2.同理可证d≤c

dnb的公约数

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

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

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

dmn的公约数

cmn的最大公约数

dc

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

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

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