辗转相除法的原理

牛蛙蝌蚪2023-01-30  29

原理:

设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a (mod b) 为a除以b的余数,k为a除以b的商,即a÷b=k.......r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。

第一步:令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)cd,b=nc=ycd,则a与b的一个公约数cd>c,故c非a与b的最大公约数,与前面结论矛盾),因此c也是b与r的最大公约数。

从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。

证毕。

以上步骤的操作是建立在刚开始时r≠0的基础之上的。即m与n亦互质。

解释:

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至公元前300年前。

来源:

设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个余数为0的除数即为(a, b)的最大公约数。

例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个余数为0d的除数就是5, 5就是所求最大公约数。

举例说明:

不定方程为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的一组解。

辗转相除法求两个数的最大公约数的步骤如下:

先用小的一个数除大的一个数,得第一个余数;

再用第一个余数除小的一个数,得第二个余数;

又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

例如求1515和600的最大公约数,

第一次:用600除1515,商2余315;

第二次:用315除600,商1余285;

第三次:用285除315,商1余30;

第四次:用30除285,商9余15;

第五次:用15除30,商2余0。

1515和600的最大公约数是15。

辗转相除法是求两个数的最大公约数的方法。如果求几个数的最大公约数,可以先求两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数。这样依次下去,直到最后一个数为止。最后所得的一个最大公约数,就是所求的几个数的最大公约数。

那我就按照你给的这个例子具体来说吧:

8251=6105+2146,为了表示简单,我就用a=b+c表示这个吧

于是有c=a-b

那么如果有d|a,且d|b,就必然有d|a-b,也就是d|c,

可见a和b的公约数必然也是c的约数。

现在假设d是a,b的最大公约数,那么d也必然是c的约数,于是d是b,c的公约数,现在就要证明它是最大公约数——

因为a=b+c,于是b,c的公约数也必然是a的约数,假设(b,c)=e,(根据"d是b,c的公约数"知道d|e)那么有e|b+c,即e|a,可见e也是a,b的公约数,e|d,综上有e=d

可见(a,b)=(b,c)=d

这个思想一推广,就成了辗转相除法了。

说的够明白吧?呵呵 .....


转载请注明原文地址:https://juke.outofmemory.cn/read/2826598.html

最新回复(0)