上一篇:https://blog.csdn.net/qq_43057060/article/details/95898885
上次说到要证明 算法E 的,这次继续。
正文
证明过程:
在步骤E1执行完之后,就会有
m=?*n+r
如果r=0,m就是n的倍数,于是n就是{m,n}的最大公约数
如果r!=0,那么注意了!
一个数如果是m和n的因数那么他就一定是m-n-n-n-n······=m-?n=r的因数
如果他是n和r的公因数,他一定是r+n+n+n+n······=r+?n=m的因数。
也就是说**“{m,n}的公因数={n,r}的公因数”**
也就是说**“{m,n}的最大公因数={n,r}的最大公因数”**
(如果是尾递归写法就清楚了,我再给大家看一下代码。)
#include<iostream>
using namespace std;
int euclid(int m,int n);