Xây dựng các chương trình hay chương trình con

Một phần của tài liệu Tài liệu tập huấn CNTT tháng 11 năm 2011 (Trang 35 - 39)

- xây dựng các chương trình hay chương trình con

thực hiện thuật toán.

THẢO LUẬN NHÓM SỐ 3

Thời gian thực hiện: 15 phút

Thời gian thực hiện: 15 phút..

Mục tiêu cần đạt:

Mục tiêu cần đạt:

- thảo luận và tìm ra thuật toán cho các bài toán từ

- thảo luận và tìm ra thuật toán cho các bài toán từ

phiếu học tập số 3.

phiếu học tập số 3.

- cả nhóm cùng thiết kế và mô tả lại các thuật toán.

III. Ướ ố ộ ốc s , b i s .

III. Ướ ố ộ ốc s , b i s .

Tìm ước chung lớn nhất của hai số nguyên dương a, b:

III.3.2. Thuật toán Euclid dạng đệ quy và sự mở rộng. Thuật toán Euclid tìm UCLN của a và b, viết

dưới dạng đệ quy: function GCD(a, b : longint) : longint; begin if (a<b) then GCD := GCD(b, a) else if (b=0) then GCD := a else GCD := GCD(b, a mod b); end;

III. Ướ ố ộ ốc s , b i s .

III. Ướ ố ộ ốc s , b i s .

Tìm ước chung lớn nhất của hai số nguyên dương a, b:

III.3.2. Thuật toán Euclid dạng đệ quy và sự mở rộng.

Nếu UCLN(a, b) = d, thì tồn tại hai số nguyên x, y sao cho ax + by = d (*)

Thuật toán Euclid mở rộng sẽ tìm

USCLN d của a và b, đồng thời tìm được cả hai số nguyên x, y trong công thức (*)

Thuật toán Euclid mở rộng có thể diễn đạt bằng đệ quy như sau:

III. Ướ ố ộ ốc s , b i s .

III. Ướ ố ộ ốc s , b i s .

Tìm ước chung lớn nhất của hai số nguyên dương a, b:

III.3.2. Thuật toán Euclid dạng đệ quy và sự mở rộng.

procedure

procedure ee(a, b : longint; var x, y : longint); ee(a, b : longint; var x, y : longint); (adsbygoogle = window.adsbygoogle || []).push({});

varvar x2, y2 : longint; x2, y2 : longint;

begin

begin

if

if (a<b) (a<b) thenthen ee(b, a, x, y) ee(b, a, x, y)

else

else ifif (b=0) (b=0) thenthen beginbegin

x := 1; y := 0; x := 1; y := 0;

endendelseelse beginbegin

ee(b, a mod b, x2, y2); ee(b, a mod b, x2, y2);

x := y2; y := x2 - (a div b) * y2; x := y2; y := x2 - (a div b) * y2;

endend; ;

end

end; ;

Giải thích:

- Từ III.3.1, ta đã biết UCLN(a, b) = UCLN(b, r) = d UCLN(b, r) = d

Một phần của tài liệu Tài liệu tập huấn CNTT tháng 11 năm 2011 (Trang 35 - 39)