辗转相除法

怎样利用辗转相除法求不等式中的正整数解

辗转相除法
开放分类: 数学、最大公约数

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至前300年。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。它并不需要把二数作质因子分解。

证明:
设两数为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 的最大公因子的:

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,并返回第一步。

[编辑] 虚拟码

这个算法可以用递归写成如下:

function gcd(a, b) {
if a mod b<>0
return gcd(b, a mod b);
else
return a;
}

或纯使用循环:

function gcd(a, b) {
define r as integer;
while b ≠ 0 {
r := a mod b;
a := b;
b := r;
}
return a;
}

其中“a mod b”是指取 a ÷ b 的余数。

例如,123456 和 7890 的最大公因子是 6, 这可由下列步骤看出:
a b a mod b
123456 7890 5106
7890 5106 2784
5106 2784 2322
2784 2322 462
2322 462 12
462 12 6
12 6 0

只要可计算余数都可用辗转相除法来求最大公因子。这包括多项式、复整数及所有欧几里德定义域(Euclidean domain)。

辗转相除法的运算速度为 O(n2),其中 n 为输入数值的位数。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-11-05
第2个回答  2008-04-06
ax+by=c,把a,b互相除求余数
如:5x+12y=9
12/5....2
5/2.....1
所以9=1*9=(5-2*2)*9=5*9-(12-5*2)*9=5*9-12*9+5*18=5*27-12*9
x0=27,y0=-9

辗转相除法除到余数为0为止。
辗转相除法除到余数为0为止。具体而言,从定义上可知,欧几里德算法,也称辗转相除法。其基本思想是:对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。所以辗转相除法是一个比较重要的基础算法。辗转相除法计算例子:假如需要求 1997 和 615 两个正整数的最大公约数...

辗转相除法求最大公约数和最小公倍数
关于辗转相除法求最大公约数和最小公倍数如下:求正整数的最大公约数,原理:两数中较大数a和较小数b的最大公约数与两数差a-b和b的最大公约数相同,由此我们可以考虑用较大数除以较小数,求得商和余数,不断重复,最终的除数即为所要求得最大公约数。由除法的性质可知,该方法一定能在有限步数后求...

辗转相除法求最大公因式原理
辗转相除法求最大公因式原理如下:一、辗转相除法可以求两个因数的最大公因数。(欧几里德算法)1.我们可以用列举法、筛选法及短除法求得,如:6和9的最大公因数(6,9)=3 2.辗转相除法。9÷6=1……3 6÷3=2 3就是9和6的最大公因数。再如:30和80的最大公因数。80÷30=2……20 ...

辗转相除法推导过程
辗转相除法,又名欧几里德算法(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,则再用...

辗转相除法是求最小公倍数的一种常用方法吗?
辗转相除法是一种递归算法,通过多次用较小数去除较大数,直到余数为0,得到两个数的最大公约数。该算法的基本原理是利用辗转相除求余的过程,不断将除数和余数进行递归运算,最终得到的较大数就是最大公约数。2、最大公约数与最小公倍数的关系:假设两个数分别为a和b,它们的最大公约数为gcd(a...

如何用辗转相除法求最大公约数?
辗转相除法,又称欧几里得算法,是求两个整数最大公约数的一种有效方法。其基本原理是:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。具体步骤如下:1.首先,确定两个要进行比较的整数,假设为a和b(假设a>b)。2.然后,计算a除以b的余数,记为r。即r=a-b*(a\/b)。3....

辗转相除法原理证明
辗转相除法是求两个数的最大公约数的方法。如果求几个数的最大公约数,可以先求两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数。这样依次下去,直到最后一个数为止。最后所得的一个最大公约数,就是所求的几个数的最大公约数。辗转相除法,是由欧几里德算法而来。其基本原理...

辗转相除法求最小公倍数
1. 辗转相除法:辗转相除法是一种递归算法,用于求解两个数的最大公约数。其基本原理是通过连续用较小数去除较大数,直到余数为0,此时较大数即为两数的最大公约数。2. 最大公约数与最小公倍数的关系:假设两个数分别为a和b,它们的最大公约数记为gcd(a, b),最小公倍数记为lcm(a, b)...

什么叫做辗转相除法?举几个例子
辗转相除法最大的用途就是用来求两个数的最大公约数。用(a,b)来表示a和b的最大公约数。有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c)。 (证明过程请参考其它资料)例:求 15750 与27216的最大公约数。解:∵27216=15750×1+11466 ∴(15750,27216)=(15750,11466)...

短除法和辗转相除法怎么区分
除法、运算方式。1、除法不同。短除法是双除法,而辗转相除法是单除法。2、运算方式不同。短除法是先找公有的约数,然后相乘,而辗转相除法是每一次都用除数和能够整除的那个余数相除。除法是四则运算之一。已知两个因数的积与其中一个非零因数,求另一个因数的运算,叫做除法。

相似回答