欧几里得算法(辗转相除法)
g c d ( a , b ) = g c d ( b , a m o d b ) gcd (a, b) = gcd(b,a \ mod \ b) gcd(a,b)=gcd(b,a mod b)
证明
必要性:
假设 A , B A,B A,B 是整数, R R R 是 A , B A, B A,B 的余数,即 R = A m o d B R = A\ mod\ B R=A mod B .
A
,
B
A, B
A,B 是整数,所以
A
A
A 可以写成
A
=
B
q
+
R
(1)
A = Bq + R\tag1 \\
A=Bq+R(1)
假设
u
u
u 是
A
,
B
A,B
A,B 的一个公因数,即
u
=
(
A
,
B
)
u = (A,B)
u=(A,B) ,则
A
,
B
A,B
A,B 可以写成:
A
=
a
′
u
B
=
b
′
u
(2)
A = a'u\\\tag2 B = b'u
A=a′uB=b′u(2)
将
(
2
)
(2)
(2) 式代入
(
1
)
(1)
(1) 式,得:
a
′
u
=
b
′
u
q
+
R
(3)
a'u = b'uq + R\tag3
a′u=b′uq+R(3)
整理得:
R
=
u
(
a
′
−
b
′
q
)
(4)
R = u(a'-b'q)\tag4
R=u(a′−b′q)(4)
又因为,
a
′
,
b
′
,
q
a',b',q
a′,b′,q 均为整数,所以
a
′
−
b
′
q
a'-b'q
a′−b′q 也为整数,则
R
可以写成
:
R\ 可以写成:
R 可以写成:
R
=
u
r
′
(5)
R = ur'\tag5
R=ur′(5)
所以
u
u
u 也是
R
R
R 的因数,即
u
u
u 是
A
,
B
,
R
A,B,R
A,B,R 的公因数,即
(
A
,
B
)
=
(
B
,
R
)
(6)
(A,B) = (B,R)\tag6
(A,B)=(B,R)(6)
即
(
A
,
B
)
=
(
B
,
A
m
o
d
B
)
(7)
(A,B) = (B,A\ mod \ B)\tag7
(A,B)=(B,A mod B)(7)
充分性:
同样假设
v
v
v 为 $B,R $ 的公因数,即:
B
=
b
′
v
R
=
r
′
v
(8)
B = b'v\\ R = r'v\tag8
B=b′vR=r′v(8)
代入
(
1
)
(1)
(1) 式得:
A
=
b
′
v
q
+
r
′
v
(9)
A = b'vq+r'v\tag9
A=b′vq+r′v(9)
整理得
A
=
v
(
b
′
q
+
r
′
)
(10)
A = v(b'q+r')\tag{10}
A=v(b′q+r′)(10)
即
A
=
v
a
′
(11)
A = va'\tag{11}
A=va′(11)
所以,
v
v
v 为
A
,
B
,
R
A,B,R
A,B,R 的公因数。
综上,因为 u , v u,v u,v 均为任意公因数,所以 ( A , B ) = ( B , R ) (A,B) = (B,R) (A,B)=(B,R) ,即两公因数集合相等,易知集合中的最大值(最大公因数)也相等
得证: g c d ( A , B ) = g c d ( B , A m o d B ) gcd(A,B) = gcd(B,A\ mod\ B) gcd(A,B)=gcd(B,A mod B)