Thuật toán Euclid 1 Thuật toán Euclid

Một phần của tài liệu Đồ án tốt nghiệp nghiên cứu, cài đặt chữ ký số elgaman (Trang 28 - 30)

2.4.1 Thuật toán Euclid

Thuật toán Euclid, là một giải thuật giúp tính ước số chung lớn

nhất (ƯSCLN) của hai số một cách hiệu quả. Giải thuật này đã được biết đến từ khoảng năm 300 trước Công Nguyên. Nhà toán học Hy Lạp cổ Euclid đã viết giải thuật này trong cuốn sách toán nổi tiếng Elements.

Ở dạng đơn giản nhất, thuật toán Euclid bắt đầu với cặp số nguyên dương, và tạo ra một cặp số nguyên dương mới bao gồm số nhỏ hơn và phần dư của của phép chia hai số ban đầu. Quá trình được tiếp tục cho đến khi hai số trong cặp bằng nhau, giá trị lúc đó sẽ trở thành ước số chung lớn nhất của cặp số ban đầu.

Nguyên lý chính của thuật toán là ước số chung lớn nhất của một cặp số không thay đổi với hiệu của hai số đó. Ví dụ như ƯSCLN của 252 và 105 chính bằng ƯSCLN của 147 (= 252 − 105) và 105. Vì số lớn hơn trong cặp số bị giảm giá trị nên việc lặp đi lặp lại thuật toán này giúp tạo ra những số ngày càng nhỏ và đến một lúc nào đó quá trình này sẽ kết thúc — khi cặp số còn lại hai số bằng nhau (nếu quá trình được thực hiện thêm một bước nữa, sẽ có một trong hai số trở thành số 0).

Thuật toán Euclid cũng là một thành phần then chốt trong thuật toán mã hóa RSA, một mật mã hóa khóa công khai được sử dụng rộng rãi trong thương mại điện tử.

Thuật toán Euclid dùng để tìm ước số chung lớn nhất của hai số nguyên a và b. Ta ký hiệu ước số chung lớn nhất này là gcd(a, b). Thuật toán này dựa trên định lý sau:

Định lý: Với mọi số nguyên a>0 và b>0 thì: gcd(a, b)=gcd(b, a mod b) Chứng minh:

Gọi d là ước số chung lớn nhất của a và b. Gọi r là phần dư của phép chia a mod b: a = bq + r

Ta sẽ chứng minh hai điều sau:

- b và r chia hết cho d: Vì a và b đều chia hết cho d nên từ đẳng thức (1) ta có r phải chia hết cho d.

- Không tồn tại e > d mà b và r chia hết cho e: Giả sử tồn tại số e > d mà b và r chia hết cho e. Như vậy từ đẳng thức (1) ta có a cũng chia hết

cho e. Vậy a và b đều chia hết cho e là trái với giả thiết d là ước số chung lớn nhất của a và b.

Vì gcd(b, 0) = b nên áp dụng liên tiếp định lý trên cho đến khi r = 0 ta sẽ tìm được gcd(a,b). Cụ thể ta có thuật toán Euclid sau áp dụng cho trường hợp a > b > 0.

Giả sử a = bq + r, với a, b, q, r là các số nguyên, ta có:

b nếu r = 0

UCLN(a,b)=

UCLN(b,r) nếu r 0 Trong đó r = a mod b

Một phần của tài liệu Đồ án tốt nghiệp nghiên cứu, cài đặt chữ ký số elgaman (Trang 28 - 30)

Tải bản đầy đủ (DOCX)

(59 trang)
w