今天看到关于求两数最大公约数的帖子,就想起欧几里得算法,但是此算法是怎么证明的呢?一时间还真想不起来了,哎!还是理解的不深刻,现将其证明记录如下,没事时候可以翻翻看。
欧几里得算法又称为辗转相除法,用来计算两个整数(a>b)的最大公约数。
定理:gcd(a,b) = gcd(b,a mod b);
因为a>b,假设a = kb+r, --> r = a mod b;
设c是既是a,也是b的一个公约数,
则有,c|a,c|b,
而 r = a - kb, 故有c|r,
所以,可以证明a与b的公约数集合和b与a mod b的公约数集合相等,
最大公约数必然也相等,即有gcd(a,b) = gcd(b,a mod b);