TRÌNH BÀY VẤN ĐỀ TÍNH PHẦN TỬ NGHỊCH ĐẢO CÁC SỐ LỚN THEO MODULO 1 Phần tử nghịch đảo 1.1 Vành 1.2 Định nghĩa Phần tử nghịch đảo 2 Thuật toán Euclide mở rộng 2.1 Cơ sở lý thuyết của giải thuật 2.2 Giải thuật 2.3 Kết quả chương trình
Trang 1Mục lục
Trang 21 Phần tử nghịch đảo
1.1 Vành
Trong lý thuyết số, vành được định nghĩa là vành thương của với quan hệ đồng dư theo modulo m (là quan hệ tương đương) mà các phần tử của nó là các lớp đồng dư theo modulo m (m là số nguyên dương lớn hơn 1) Ta cũng có thể xét chỉ với các đại diện của nó Khi đó
Phép cộng và nhân trong là phép toán thông thường được rút gọn theo
modulo m:
Trong lý thuyết số đã chứng minh rằng, số a là khả nghịch theo modulo m khi
và chỉ khi ƯCLN của a và m bằng 1
Đẳng thức này lại chỉ ra y là nghịch đảo của a theo modulo m Do đó có thể tìm được phần tử nghịch đảo của a theo modulo m nhờ thuật toán Euclid mở rộng khi chia m cho a
1.2 Định nghĩa Phần tử nghịch đảo
Định nghĩa: Phần tử a của được gọi là khả nghịch trong hay khả nghịch theo modulo m nếu tồn tại phần tử a' trong sao cho a*a'=1 trong
hay Khi đó a' được gọi là nghịch đảo modulo m của a
Tính chất:
• Cho a, b ∈
Zn Phép chia a cho b theo modulo n là tích của a và b theo modulo n, và chỉ được xác định khi b có nghịch đảo theo modulo n
• Cho a ∈
Zn, a là khả nghịch khi và chỉ khi gcd (a, n) = 1
Trang 3• Giả sử d = gcd (a, n) Phương trình đồng dư ax = b mod n có nghiệm x nếu và chỉ nếu d chia hết cho b, trong trường hợp các nghiệm d nằm trong khoảng 0 đến n – 1 thì các nghiệm đồng dư theo modulo n/d
Định lý: Cho số nguyên a > 0 nguyên tố cùng nhau với n, thì luôn tồn tại
phần tử nghịch đảo của a theo modulo n.
Chứng minh: Hãy xét tập hợp{1,2, ,n−1}
Nhân từng phần tử của tập hợp
với a theo modulo n, nhận được tập hợp
{(a mod n), ( 2a mod n), , ((n− 1 )a mod n)}
, tập này sẽ bao gồm các số 1, 2,…,
n– 1, có nghĩa đối với một số giá trị i nào đó sẽ thỏa mãn điều kiện
1 mod n =
ia
Điều này dẫn đến một mâu thuẫn nếu như tồn tại hai giá trị h và
k thỏa mãn điều kiện trên, nghĩa là
n ka
n
ha mod = mod
Điều này dẫn đến
n k
h≡ mod
, vì gcd(a, n) = 1, suy ra h = k Vậy ta tìm được i là phần tử nghịch đảo của a và i là duy nhất.
Hệ quả: Nếu như p là số nguyên tố, thì bất kỳ số a, sao cho 0 < a < p, luôn
tồn tại phần tử nghịch đảo theo modulo p
2 Thuật toán Euclide mở rộng
Giải thuật Euclid mở rộng sử dụng để giải phương trình vô định nguyên (còn được gọi là phương trình Đi-ô-phăng)
a*x+b*y=c,
trong đó a, b, c là các hệ số nguyên, x, y là các ẩn nhận giá trị nguyên Điều kiện cần và đủ để phương trình này có nghiệm (nguyên) là UCLN(a, b) là ước của c
Khẳng định này dựa trên một mệnh đề sau:
Trong số học đã biết rằng nếu d=UCLN(a, b) thì tồn tại các số nguyên x, y sao
Trang 4a'*x+b*y = d
2.1 Cơ sở lý thuyết của giải thuật
Giải thuật Euclide mở rộng kết hợp quá trình tìm ƯCLN(a, b) trong thuật toán
Eclid với việc tìm một cặp số x, y thoả mãn phương trình Đi-ô-phăng Giả sử cho hai số tự nhiên a, b, ngoài ra a>b>0 Đặt , chia cho được số dư và thương số nguyên Nếu thì dừng, nếu khác không, chia cho được số dư , Vì dãy các là giảm thực sự nên sau hữu hạn bước ta được số dư
;
; ;
trong đó số dư cuối cùng khác 0 là Bài toán đặt ra là tìm x, y sao cho
Để làm điều này, ta tìm x, y theo công thức truy hồi, nghĩa là sẽ tìm
và sao cho:
Ta có
Tổng quát, giả sử có
Khi đó từ
Trang 5suy ra
từ đó, có thể chọn
(2) (3) Khi ta có được và Các công thức (1), (2), (3) là công thức truy hồi để tính x, y Khi d=1 ta có y là nghịch đảo của b theo modulo a
Do đó có thể tìm được phần tử nghịch đảo của b theo modulo a nhờ thuật toán Euclid mở rộng khi chia a cho b
2.2 Giải thuật
Giải thuật sau chỉ thực hiện với các số nguyên a>b>0, biểu diễn bằng giả mã: Sub Euclid_Extended(a,b)
Dim y,y1 As Single
y0=0 : y1=1
While b>0
r= a mod b
if r=0 then Exit While
q= a / b
y= y0-y1*q
a=b
b=r
y0=y1
y1=y
Wend
Me.Print d:=b, y
code
End Sub
Ví dụ 2.18 (Thuật toán Euclide mở rộng):
Tìm số nghịch đảo (nếu có) của 30 theo môđun 101
Trang 6ớc i
0 10 1 30 11 3 0 1 -3
2 11 8 3 1 -3 7 -10
3 8 3 2 2 7 -10 27
4 3 2 1 1 -10 27 -37
Kết quả tính toán trong bảng cho ta Lấy số đối của theo mođun
2.3 Kết quả chương trình
Chương trình được viết bằng ngôn ngữ C++
Dưới đây là kết quả đầu ra khi chạy chương trình
Hình 1 : b không khả nghịch theo modulo a
Trang 7Hình 2: b khả nghịch theo modulo a
Trang 8Tài liệu tham khảo
1. Wikipedia http://vi.wikipedia.org/wiki/Gi%E1%BA%A3i_thu%E1%BA
%ADt_Euclid_m%E1%BB%9F_r%E1%BB%99ng