求最大公约数,大家一定都知道辗转相除法,不知道是不是都知道原理呢?
辗转相除法证明
证明参考
假设:
求m和n的最大公约数。
a,b分别是m除以n的商和余数,即m=na+b。
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)
求两个数的最大公约数