网上可以看到很多介绍两正整数最大公约数的方法,但都仅限于告诉你怎么求,没有给出为什么可以这么求。当然,“为什么可以这么求”并不难,可能大牛们也不屑一写,但对我来讲,知其然重要,知其所以然更重要。因此,萌生了写这一遍文章的想法。
下述链接介绍了三种求解最大公约数的方法,第一种和第二种原理一致,只不过把第一种的除留取余思想改成减法来实现布局。第三种复杂度较高,不作介绍。
先介绍辗转相除法步骤:
a, b为两正整数
1. a%b=0,则b为a和b的最大公约数,结束。
2. a%b=c,则a=b, b=c,回到步骤1。
再证明辗转相除法可行性:
这里仅介绍辗转两次的证明,两次以上的证明可用归纳法。
a%b=c, b%c=0, 则c为a和b最大公约数。
因为b%c=0,所以b=mc,则a=nb+c=nmc+c=(nm+1)c,证明结束(m, n均为非0整数)。