a a a与 b b b同为整数, a a a是 b b b的约数记作 a ∣ b a|b a∣b,有一整数 d d d,满足 d ∣ a ; d ∣ b d|a;d|b d∣a;d∣b则 d d d为 a , b a,b a,b的公约数,现在约定 a , b a,b a,b的最大公约数记作 g c d ( a , b ) gcd(a,b) gcd(a,b).
定理:
g
c
d
(
a
,
b
)
=
g
c
d
(
r
,
a
)
;
a
≠
0
,
r
=
b
m
o
d
a
gcd(a,b) = gcd(r,a); a \neq 0 , r = b \mod a
gcd(a,b)=gcd(r,a);a=0,r=bmoda
证明:
设
d
=
g
c
d
(
a
,
b
)
d = gcd(a,b)
d=gcd(a,b)
存在整数
x
,
y
x,y
x,y有
x
d
=
a
,
y
d
=
b
xd = a, yd = b
xd=a,yd=b
那么
b
m
o
d
a
=
y
d
m
o
d
x
d
=
(
y
m
o
d
x
)
d
=
c
d
b \mod a = yd \mod xd = (y \mod x) d = cd
bmoda=ydmodxd=(ymodx)d=cd
自然有
d
=
g
c
d
(
c
d
,
x
d
)
=
g
c
d
(
r
,
a
)
=
g
c
d
(
a
,
b
)
d = gcd(cd,xd) = gcd(r,a) = gcd(a,b)
d=gcd(cd,xd)=gcd(r,a)=gcd(a,b)
定理: g c d ( x , x ) = x gcd(x,x) = x gcd(x,x)=x
最大公约数函数:
int gcd(int a,int b) {
return b == 0 ? a : gcd(b,a % b);
}