辗转相除法,又名欧几里德算法(Euclideanalgorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法,其可追溯至3000年前。这种算法,在中国则可以追溯至东汉出现的《九章算术》。
定义
求两个正整数的最大公约数的算法。设两数为a、b(b<a),求它们最大公约数(a、b)的步骤如下:用b除a,得a=bq_1+r_1(0≤r_1<b)。若r_1=0,则(a,b)=b;若r_1≠0,则再用r_1除b,得b=r_1q_2+r_2(0≤r_2<r_1)。若r_2=0,则(a,b)=r_1,若r_2≠0,则继续用r_2除r_1,……如此下去,直到能整除为止。其最后一个非零余数即为(a,b)。类似地,求两个多项式的最高公因式也可用此法。
原理
设两数为a、b(b
第一步:令c=gcd(a,b),则设a=mc,b=nc
第二步:根据前提可知r=a-kb=mc-knc=(m-kn)c
第三步:根据第二步结果可知c也是r的因数
第四步:可以断定m-kn与n互质【否则,可设m-kn=xd,n=yd(d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)dc,b=nc=ycd,故a与b最大公约数成为cd,而非c,与前面结论矛盾】
从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。
证毕。
应用
求不定方程的一组整数解方法
[注:以下出现的q,r括号中的是下标,gcd(a,b)为a,b的最大公约数]
辗转相除法可以求出特定条件的不定方程的一组整数解。
设不定方程为ax+by=c,其中a,b,c为整数,且gcd(a,b)|c
a,b辗转相除的算式为
b=qa+r
a=qr+r
r=qr+r
…
r=qr+r
r=qr
其中r=gcd(a,b),不妨令b=r,a=r,r=0
第i个算式为
r=q×r+r
所以r=r-qr(i)(1)
用公式(1)可以得到r=gcd(a,b)关于a,b的线性组合sa+tb=gcd(a,b)
所以不定方程a×x+b×y=c的一组特解为x=s×c/gcd(a,b)y=t×c/gcd(a,b)
举例说明
例如不定方程为326x+78y=4,求出一组整数解x,y
求(326,78)的算式为:
326=4*78+14
14=326-4*78
78=5*14+8
8=78-5*14
14=1*8+6
6=14-1*8
8=1*6+2
2=8-1*6
6=3*2
所以
2=8-6=8-(14-8)
=2*8-14=2*(78-5*14)-14
=2*78-11*14=2*78-11*(326-4*78)
=46*78-11*326
即2=(-11)*326+46*78
所以4=(-22)*326+92*78
所以x=-22,y=92是不定方程326x+78y=4的一组解。
相关原理
两个整数的最大公约数是能够同时整除它们的最大的正整数。
辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
例如,252和105的最大公约数是21(252=21×12;105=21×5);
因为252÷105=242,所以(105,42)是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至余数变为零。这时的除数就是所求的两个数的最大公约数。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如21=5×105+(−2)×252。这个重要的等式叫做贝祖等式(又称“裴蜀定理”)。
该文章由作者:【风起于青萍之末】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!