辗除法(
zhǎnchúfǎ
)
——
辗转相除法,又名欧几里德算法(
Euclidean algorithm
)乃求两
个正整数之最大公因子的算法。它是已知最古老的算法,其可追溯至
3000
年前。它首次出
现于欧几里德的《几何原本》(第
VII
卷,命题
i
和
ii
)中,而在中国则可以追溯至东汉出
现的《九章算术》。它并不需要把二数作质因子分解。
证明:
设两数为
a
、
b(b
,
求它们最大公约数
(a
、
b)
的步骤如下:
用
b
除
a
,
得
a=bq......r 1(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
)
若
r = 0
,算法结束;
b
即为答案。
2.
互换:置
a←b
,
b←r
,并返回第一步。
[
编辑
]
虚拟码
这个算法可以用递归写成如下
:
functiongcd(a, b) {
if b<>0
returngcd(b, a mod b);
else
return a;
}
或纯使用循环
:
functiongcd(a, b) {
define r as integer;
while b ≠ 0 {
r := a mod b;
a := b;
b := r;
辗转相除法,又称欧几里德算法,是求解两个正整数最大公因子的古老算法。该算法通过不断用较小数除较大数并取余数,直至余数为0,最后一个非零余数即为最大公因子。本文介绍了辗转相除法的原理、算法步骤及递归和循环两种实现方式。

被折叠的 条评论
为什么被折叠?



