Professional Documents
Culture Documents
Giải thuật Euclid
Giải thuật Euclid
Gii thut Euclid, hay thut ton Euclid, l mt gii thut gip tnh c s chung ln nht (SCLN) ca hai s mt cch hiu qu. Gii thut ny c bit n t khong nm 300 trc Cng Nguyn. Nh ton hc Hy Lp c Euclid vit gii thut ny trong cun sch ton ni ting Elements.
Mc lc
[n]
1 V d 2 B 3 M gii =
4 Xem thm
[sa]V
Tnh c s chung ln nht ca 91 v 287. Trc ht ly 287 (s ln hn trong 2 s) chia cho 91: 287 = 91*3 + 14 (91 & 14 s c dng cho vng lp k) Nhn xt: bt k s no chia ht bi 287 v 91 cng s chia ht bi 287 - 91*3 = 14. Tng t, s chia ht bi 91 v 14 cng chia ht bi 91*3 + 14 = 287. Do , SCLN(91,287) = SCLN(91,14). Bi ton tr thnh tm SCLN(91,14). Lp li quy trnh trn cho n khi php chia khng cn s d nh sau: 91 = 14*6 + 7 (14 & 7 s c dng cho vng lp k) 14 = 7*2 (khng cn s d, kt thc, nhn 7 lm kt qu) Cui cng ta c: 7 = SCLN(14,7) = SCLN(91,14) = SCLN(287,91).
[sa]B
Gi s a = bq + r, vi a, b, q, r l cc s nguyn, ta c:
[sa]M
gii =
[sa]Chng
trnh quy
procedure USCLN(a, b : positive integers) Begin if a mod b = 0 then USCLN := b else USCLN(b; a mod b); End
[sa]Chng
procedure USCLN(a, b : positive integers) Begin x := a y := b while y 0 begin r := x mod y x := y y := r end{x la USCLN cn tm}