THEOREM. For every choice of integers a,b
that are not
both zero, we have
max{d: d|a and d|b} =
min{ax+by: x,y are integers and ax+by>0}
.
Proof. The inequality max<=min
follows from the fact
that
d|a
and d|b
and if x,y
are integers,
then d|(ax+by)
.
max>=min
, we shall find integers
d,x,y
such that d|a
, d|b
,
d>0
, and d=ax+by
; for this purpose,
we may assume (since we may switch a
and
b
and since we may change their signs) that
a>=b>=0
. The following algorithm maintains the loop
invariant
d|di-1
and d|di
, then
d|a
and d|b
,
di-1=axi-1+byi-1
and
di=axi+byi
;
di
other than
d0,d1
that it
constructs is nonnegative and less than di-1
,
the algorithm terminates. Hence it returns the desired d,x,y
.
d0=a, d1=b; x0=1, x1=0; y0=0, y1=1; i = 1; while di >0 do i = i+1; q = floor of di-2/di-1; di = di-2 -qdi-1; xi = xi-2 -qxi-1; yi = yi-2 -qyi-1; end return (di-1, xi-1, yi-1);This algorithm is known as the extended Euclidean algorithm.