TỐC ĐỘ X2
TỐC ĐỘ X2
TỐC ĐỘ X2

CHUYÊN ĐỀ ÔN THI

Chạy thuật toán Euclide mở rộng trên bảng tính để tìm nghịch đảo mô-đu-lô

BÀI TOÁN

Tìm số tự nhiên N lớn nhất có 14 chữ số, biết rằng N chia cho 7741 dư 2017, chia cho 2017 dư 2013 và  chia cho 2013 dư 2011.

HƯỚNG DẪN GIẢI

Xét hệ phương trình  

    
(Để gọi GCD (ƯCLN) ta bấm qT.SHIFT CATALOG CHẤM)

nên hệ phương trình  có nghiệm duy nhất 

trong đó z1,z2,z3z_1, z_2, z_3 được  gọi là nghịch đảo của (số trong ngoặc đơn) theo mô-đu-lô  mod1=7741, mod2=2017, mod3=2013 tương ứng.

Để tìm z1,z2,z3z_1, z_2, z_3 ta chạy thuật toán Euclide mở rộng trên bảng tính:

Tìm z1z_1:  Mở một bảng tính (bấm w4), nhập 7741 (ta gọi là mod) vào A1 và 2017×20132017\times 2013 vào A2 . Từ A3 đến A20 ta điền công thức (bấm I1), chỗ bị khuất là A1÷A2)A_1\div A_2), chấp nhận thông báo Error (do phép chia cho 0)  |.   


Để nhập hàm Int trong bảng tính ta bấm qTR0.            
Sau đó nhập 0 vào B1, 1 vào B2
 (chấp nhận thông báo Error). Từ B3 đến B20  điền công thức , chỗ bị khuất như trên .


Ở cột A ta tìm dòng chứa số 1 (dòng 11) thì B11=291B_{11}=-291 chính là nghịch đảo z1z_1 cần tìm.

 

Để tìm z2z_2 ta chỉ cần thay A1 bằng 2017 và A2 bằng 7741.20137741.2013 , kết quả  z2=165 z_2=165.

Để tìm z3z_3 ta chỉ cần thay A1 bằng 2013 và A2 bằng 7741.20177741.2017 , kết quả   z3=89 z_3=-89.


x=2017.2017.2013.(291)+2013.7741.2013.165+2011.7741.2017.(89)+k.7741.2017.2013x=2017.2017.2013.(-291)+2013.7741.2013.165+2011.7741.2017.(-89)+k.7741.2017.2013

 lưu vào z.

Vì x lớn nhất có 14 chữ số nên k=3181k =3181     

x= 99977426315776     





Lưu ý:

Tại sao trong bài toán phải chọn 20 dòng? Thuật toán Euclide không cho chúng ta biết phải dừng lại sau bao nhiêu bước.  Vào năm 1844 Gabriel Lamé sử dụng dãy số Fibonasi đã chứng minh rằng thuật toán Euclide sẽ dừng lại sau một số bước không quá 5 lần số chữ số của số nhỏ hơn (trong hai số a, b tham gia thuật toán). Cụ thể ở đây a=7741,b=4060221a= 7741, b=4060221. Số nhỏ hơn là a có 4 chữ số nên Thuật toán sẽ dừng lại sau không quá  5×=205\times =20 bước.

Donald Knuth (người  phát minh ra TeX) đã gọi thuật toán Euclide là "ông tổ của tất cả các thuật toán" trong bộ sách nổi tiếng The Art of Computer Programming (Tập 2) vì đây là thuật toán không tầm thường lâu đời nhất (từ hơn 2300 năm trước) còn tồn tại và được sử dụng cho đến ngày nay. 

Trong bảng tính cột A dùng để chạy thuật toán Euclide: A1A2Int(A1÷A2)\color{blue}A_1-A_2 {\rm Int} (A_1\div A_2).

và cột B ta chạy thuật toán mở rộng:  B1B2Int(A1÷A2)\color{blue}B_1-B_2 {\rm Int} (A_1\div A_2).