简单!
全部博文(366)
分类: C/C++
2013-05-01 20:31:51
辗转相除法又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法,其可追溯至前300年。它首次出现于欧几里德的《几何原本》中,而在中国则可以追溯至东汉出现的《九章算术》。
证明:
设两数为a、b(b<a),求它们最大公约数(a、b)的步骤如下:用b除a,得a=bq......r1(0≤r)。若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q......r2(0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。
辗转相除法是利用以下性质来确定两个正整数a和b的最大公因子的:
1.若r是a÷b的余数,则gcd(a,b)=gcd(b,r)
2.a和其倍数之最大公因子为a。
另一种写法是:
1.a÷b,令r为所得余数(0≤r<b)。若r=0,算法结束;b即为答案。
2.互换:置a←b,b←r,并返回第一步。