Tài liệu Kỹ thuật lập trình - Chương 3: Kiểm tra và xây dựng số nguyên tố

19 631 0
Tài liệu Kỹ thuật lập trình - Chương 3: Kiểm tra và xây dựng số nguyên tố

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu Kỹ thuật lập trình - Chương 3: Kiểm tra và xây dựng số nguyên tố

Chương KIỂM TRA VÀ XÂY DỰNG SỐ NGUYÊN TỐ Dựa vào tính chất đặc biệt số nguyên tố, mà xây dựng số toán với việc áp dụng số nguyên tố, đặc biệt ứng dụng số ngun tố lớn, trở nên hữu ích cho mục đích tốn Trong chương tìm hiểu cách kiểm tra số nguyên tố cho trước làm để xây dựng số nguyên tố lớn 3.1 Khái niệm số nguyên tố Số tự nhiên p, lớn gọi số nguyên tố chia hết cho Định lý số học nói rằng, số tự nhiên n, lớn phân tích thành tích số ngun tố Tức số tự nhiên biểu diễn dạng sau α α n = p1 pk k , p1 < p2 < < pk - số nguyên tố khác nhau, α1 , ,α k ∈ N Bài toán kiểm tra số nguyên tố xây dựng số nguyên tố lớn có ứng dụng quan trọng mã hóa Trong phần tác giả viết thuật toán khác để giải toán 3.2 Kiểm tra số nguyên tố theo phương pháp thử Cho n ∈ N Kiểm tra xem n có phải số nguyên tố hay không Phương pháp thử chia Nếu n hợp số, n=ab, với < a ≤ b , điều kiên a ≤ n Cho nên [ ] d = 2,3, , n kiểm tra xem n có chia hết cho d hay không? Nếu ước số n khơng tìm thấy, n số ngun tố, ngược lại n hợp số, ta phân tích n thành thừa số Độ phức tạp phương pháp O( n ) Sàng Eratosphen Nếu muốn thiết lập bảng tất số nguyên tố số 2,3,…,N, cần gạch chân số chia hết cho ngọai trừ số Sau ta lấy số gạch chân số chia hết cho Sau chọn số khơng gạch chân (có nghĩa 5), tiếp tục gạch chân số chia hết cho 5, tiếp tục Và cuối có dãy số nguyên tố Phương pháp tốn nhiều nhớ, để thành lập bảng nguyên tố cách hiệu 3.3 Kiểm tra tính nguyên tố số có dạng đặc biệt Chúng ta xem số n dạng n = m + , m ∈ N Nếu m chia hết cho số nguyên tố p > , tức m = pm1 , m1 ≥ , n = (2m1 ) p + chia hết cho m1 + , có nghĩa n hợp số Cho nên số nguyên tố m = 2k k Định nghĩa 3.1 Số Fk = 2 + 1, k = 0,1,2, , gọi số Fermat Hiện biết F0 , F1 , F2 , F3 , F4 số nguyên tố, số Fermat ≤ k ≤ 32 hợp số, cịn số chưa kiểm tra Để kiểm tra tính nguyên tố số Fermat xem định lý sau Định lý 3.1 Số n = Fk k>0 số nguyên tố khi: n −1 ≡ −1(mod n) Chứng minh: Chúng ta chứng minh điều kiện đủ Chúng ta có: n − = 22 Từ k n −1 n −1 ≡ −1(mod n) , nên ≡ 1(mod n) , điều có nghĩa bậc (mod n) * n − = 2 Nên nhóm nhân Z n có n-1 phần tử, phần tử khác không k Zn khả nghịch, hay n số nguyên tố k Bây ta chứng minh phần nghịch Chú ý 2 ≡ 42 k −1 ≡ 1(mod 3) Bởi n>3, n ≡ 2(mod 3), n ≡ 1(mod 4) Theo định luật bình phương (định lý Gausse) ta có 3 n   =  .(−1) n 3 ( n −1)( −1) n 2 =   =   = −1 Theo tiêu chuẩn Euler  3 3 3  ≡3 n n−1 (mod n) Kiểm tra theo định lý độ phức tạp O(log n) , số Fermat tăng lên nhanh, nên cách kiểm tra trở nên không hiệu Bây xem số n dạng n = 2m − Nếu m hợp số, m=ab, < a ≤ b , n = ab − chia hết cho n = 2a − Cho nên số n nguyên tố chi m số nguyên tố p Định nghĩa 3.2 Cho p số nguyên tố, M p= − số nguyên tố Và số M p gọi số nguyên tố Mersenn Để kiểm tra tính nguyên tố số Mersenn ta dùng định lý sau Định lý 3.2 Cho q số nguyên tố, q>2, n = 2q − Chúng ta xem dãy L0 , L1 , L2 , , xác định dãy sau L0 = ; L j +1 ≡ L2j − 2(mod n) Số n số nguyên tố Lq − ≡ 0(mod n) p Định lý 3.3 Cho p số nguyên tố, p ≡ 3(mod 4) , M p= − Số Fermat Fp số nguyên tố chi khỉ ( F p −1) / Mp ≡ −1(mod Fp ) Chứng minh: Theo định lý nhỏ Fermat ta có Fp = 2.22 p −1 22 p −1 ≡ 2(mod M p ) , từ + ≡ 5(mod M p ) Dẫn đến UCLN ( Fp , M p ) = , dẫn đến F p −1 M M   F    Mp  ≡ (mod Fp ) ≡ p ≡ p ≡  F  M  M      p  p  p      Mp  2  =   = −1    5 4k +3 − ≡ 23 − 1(mod 5) ≡ 2(mod 5),  Cho nên M p =  Định nghĩa 3.3 (dãy số Liuka) Cho dãy số u0 , u1 , u2 , v0 , v1 , v2 , , với u0 = 0, u1 = 1, v0 = 2, v1 = , thành phần dãy tính theo cơng thức truy hồi x j +1 = x j − x j −1 , gọi dãy số Liuka 3.4 Phương pháp N ± kiểm tra tính nguyên tố xây dựng số nguyên tố lớn Trong mục tìm hiểu số phương pháp, mà với giúp đỡ kiểm tra tính ngun tố số tự nhiên N, biết hoàn toàn phần phân tích N thừa số Và tìm hiểu số phương pháp tạo số nguyên tố lớn áp dụng mật mã Đầu tiên xem phương pháp N-1 kiểm tra số nguyên tố k α Định lý 3.4 Cho n ∈ N , n > , n số lẻ, n − = ∏ pi - biết phân chia thành i i =1 thừa số nguyên tố n-1 Nếu i = 1, , k tồn số ∈ N , cho n −1 ain −1 ≡ 1(mod n) , a pi ≠ 1(mod n) , i n số nguyên tố Chứng minh: Cho mi bậc (mod n) Z n Từ điều kiện có mi | n − , mi không ước mi n −1 α α , pi i | mi với i=1,…,k Dẫn đến b ≡ a piαi (mod n) có bậc pi i pi i i * * α α Z n , phần tử b = b1 ⋅ ⋅ bk (mod n) có bậc p1 ⋅ ⋅ pk = n − Z n Điều k có nghĩa Z n trường, n số nguyên tố Từ định lý kiểm tra tính nguyên tố sau Phân tích n-1 thừa số, chọn a=2,3,…, kiểm tra điều kiện định lý Nếu tìm thấy a đó, với < a < n , mà a n −1 ≠ 1(mod n) , n hợp số Nếu tìm a1 , , ak , mà thỏa mã điều kiện định lý n số nguyên tố Tương tự với việc kiểm tra số nguyên tố phương pháp n-1, ta tìm hiểu phương pháp n+1 biết hoàn toàn nhân tử nguyên tố n+1 Định lý 3.5 Cho P, Q ∈ Z , D = P − 4Q ≠ Xác định dãy số Liuka u0 , u1 , định thức D biểu thức sau: u0 = 0, u1 = 1, u j + = Pu j +1 − Qu j điều kiện j ≥ Cho n k số tự nhiên lẻ, n>1, n + = ∏ qi - tức phân tích n+1 thừa số nguyên tố, βi i =1 D   = −1 Nếu i = 1, , k , tìm Pi , Qi ∈ Z , D = Pi − 4Qi , cho có n ( quan hệ với dãy số Liuka u0i ) , u1(i ) , thỏa mãn điều kiện: i ( n | uni+)1 n không ước u((n)+1) / qi , n số nguyên tố Nếu tồn dãy số Liuka {u j } D, cho un +1 khơng chia hết cho n, n hợp số Định lý 3.6 Cho n ∈ N , n>1, n số lẻ, n − = F1 ⋅ R1 , với UCLN ( F1 , R1 ) = Giả sử k j biết hoan tồn phân tích thừa số nguyên tố F1 = ∏ q j Nếu đối α j =1 với j=1,…,k tìm a j ∈ N , cho ( n −1) / q j a n −1 ≡ 1(mod n) , UCLN (a j j − 1, n) = với điều kiện F1 ≥ n , số n số nguyên tố Chứng minh: Giả sử p ước số nguyên tố n Chúng ta chứng minh p > n , từ dẫn đến n số nguyên tố Từ điều kiện có a n −1 ≡ 1(mod n) dẫn j n −1 đến a j ≡ 1(mod p ) , từ UCLN (a j , p) = bậc e j phần tử a j (mod p ) Z p khơng ước n-1 Ngồi ( n −1) / q ≠ 1(mod p) , theo định lý nhỏ Fermat e j | ( p − 1) Từ điều kiện định lý ta có a j j αj j từ q | e j Dẫn đến q αj j k j | ( p − 1) , F 1= ∏ q j | ( p − 1) Nghĩa p − ≥ F1 , p > F1 ≥ n α j =1 Chúng ta chứng minh với giúp đỡ định lý xây dựng số nguyên tố lớn Chúng ta xây dựng dãy số nguyên tố p1 < p2 < p3 < , xây dựng số nguyên tố đủ lớn cần Số nguyên tố p1 chọn bất kỳ, ví dụ p1 = Giả sử xây dựng số nguyên tố pi −1 Chọn số ngẫu nhiên r, ≤ r ≤ pi −1 − Giả sử: r = s t , t số lẻ Như số nguyên tố pi chọn n = 2rpi −1 + = s +1 pi −1t + Đặt F1 = s +1 pi −1 , R1 = t Rõ ràng UCLN ( F1 , R1 ) = s +1 s+2 s+2 2 có F1 > n , n = pi −1t + < pi −1t < pi −1 ≤ F1 Dẫn đến để chứng tỏ n số nguyên tố, cần tìm số a1 a2 , cho n −1 n −1 n a1n −1 ≡ a2 −1 ≡ 1(mod n) , UCLN (a − 1, n) = UCLN (a pi −1 − 1, n) = Nếu ta tìm số a, cho a n −1 ≠ 1(mod n) , n hợp số cần chọn số ngẫu nhiên r khác Nếu chứng minh n nguyên tố đặt pi = n Một phương pháp khác xây dựng số nguyên tố ứng dụng định lý nêu Chúng ta lại xây dựng dãy số nguyên tố, giả sử xây dựng pi −1 > Chúng ta chọn số chẵn ngẫu nhiên r, thỏa mãn ≤ r ≤ pi −1 − , đặt n = pi −1r + Giả sử F1 = pi −1 , R1 = r , UCLN ( F1 , R1 ) = Chúng ta cần a n −1 ≡ 1(mod n),UCLN (a r − 1, n) = (bởi tìm số tự nhiên a cho n −1 = r ) Rõ ràng ta có bất đẳng thức pi −1 F1 = pi −1 > n , n = pi −1r + ≤ pi −1 ( pi −1 − 3) + = pi2−1 − pi −1 + ≤ pi2−1 Chọn a thực tương tự phương pháp xây dựng Định lý cho cách xây dựng số nguyên tố hiệu hơn, khơng cần tính tốn ước nguyên tố lớn Định lý 3.7 Cho n = 2rq + , q số nguyên tố lẻ, r với r ≤ 2q + Nếu tồn số a ∈ N , cho a n −1 ≡ 1(mod n) , a r ≠ 1(mod n) , n số nguyên tố Chứng minh Giả sử n hợp số, n = pN , với p số nguyên tố, N > Bởi n khơng 2r nên tồn số nguyên tố p cho ν p (n) > ν p (a − 1) ước a r − , s = ν p (a r − 1) + ≥ có p s | n p s không ước a r − Giả sử d bậc a (mod p s ) Z p Số d xác định d|n-1=2rq, S a n −1 ≡ 1(mod n) Ngồi ta có d | φ ( p s ) = p s −1 ( p − 1) Nhưng từ biểu thức a r ≠ 1(mod p s ) dẫn đến d không ước 2r Nghĩa q|d Bởi q | p s −1 ( p − 1) Số q p khác nhau, p|n, q|n-1 Dẫn đến q|p-1 Từ p ≡ 1(mod q) , tính lẻ p q nên p ≡ 1(mod 2q) Ngồi n ≡ 1(mod 2q) Bởi n=pN, nên N ≡ 1(mod 2q ) Bởi p > N > 1, nên p ≥ + 2q, N ≥ + 2q Nghĩa n = pN ≥ (1 + 2q) Thế n = 2rq + ≤ 2q (2q + 1) + < (1 + 2q ) Nhận mâu thuẩn Nên định lý chứng minh Định lý 3.8 Cho n = 2qr + , q số nguyên tố, r ≤ 4q + Giả sử tồn a ∈ N , cho a n −1 ≡ 1(mod n) , a r ≠ 1(mod n) Thế n số nguyên tố, n = p , với p = 2q + - số nguyên tố a p −1 ≡ 1(mod p ) Chứng minh Giả sử n hợp số, n = pN , với p số nguyên tố, N > Chúng ta chứng minh n ≡ p ≡ N ≡ 1(mod 2q ) Nếu hai số p N lớn nhiều so với 1+ 2q , lớn + 4q , n = pN ≥ (1 + 2q)(1 + 4q ) = 8q + 6q + Nhưng điều kiện n ≤ 2q (4q + 2) + = 8q + 4q + Dẫn đến p = N = + 2q, n = p Chứng minh phần lại a p −1 ≡ 1(mod p ) Rõ ràng theo điều kiện n=p2 nên có a p định lý Euler a p −p −1 ≡ 1(mod p ) , theo ≡ 1(mod p ) , từ dẫn đến điều phải chứng minh Chú ý: Nếu biết q kiểm tra đẳng thức n = (2q + 1) dễ dàng Có nghĩa biết a, biết n nguyên tố hay hợp số Từ định lý kiểm tra tính ngun tố chúng xây dựng số nguyên tố lớn hiệu quả, lớn giới hạn số ngẫu nhiên r đạt việc xây dựng số nguyên tố ý Các định lý 1.25 – 1.29 độ lớn phân chia số n-1 có bậc n1 / Định lý sau độ lớn phân chia số n-1 có bậc nhỏ n1 / Định lý 3.9 Giả sử n số lẻ, n > 1, n − = F1 R1 , UCLN ( F1 , R1 ) = , F1 số chẳn, ta biết hoàn toàn phân chia F1 thừa số nguyên tố Giả sử ước nguyên tố q F1 tìm thấy a q ∈ N , cho n ( a q −1 ≡ 1(mod n) , UCLN (aqn −1) / q − 1, n) = Giả sử m ∈ N l = 1,2, , m − , lF1 + không ước n n < (mF1 + 1)(2 F12 + ( L − m) F1 + 1) , R1 = F1 L1 + L , ≤ L < F1 , n số nguyên tố R1 = L , L2 − 8L1 không số phương 3.5 Kiểm tra số nguyên tố thuật toán Konigin-Pomerans Nếu n ∈ N biết phân tích hồn tồn phần lớn thừa số ngun tố số n-1, để kiểm tra xem n hợp số số nguyên tố với độ phức tạp theo đa thức Đánh giá tốt độ phức tạp nhận từ thuật toán Konigin- Pomerans: k j Định lý 3.10 Giả sử n ∈ N , n > , n số lẻ, n − = ∏ q j Lúc việc kiểm tra tính a j =1  ( log n ) 17 / nguyên tố n có chi phí O  log log n      Định lý 3.11 Giả sử n ∈ N , n > , n số lẻ, n − = F1 R1 , UCLN ( F1 , R1 ) = , biết phân chia F1 thừa số nguyên tố Nếu F ≥ n n +ε , với ε số dương không đổi, việc kiểm tra tính ngun tố n chi phí O((log n) c (ε ) ) ( c(ε ) số nguyên dương không đổi, phụ thuộc vào ε ) Bổ đề 3.1 Giả sử a, m ∈ N , a m ≡ 1(mod n) , giả sử ước nguyên tố q m thỏa mãn UCLN (a m / q − 1, n) = Khi p số nguyên tố p | n , p ≡ 1(mod m) Chứng minh Rõ ràng m bậc a (mod n) Z n Giả sử p số nguyên tố, ước n, giả sử k bậc a (mod p) Như k=m Rõ ràng, k|m từ a m ≡ 1(mod n) , dẫn đến a m ≡ 1(mod p ) Nếu k log n , dẫn đến log a > log log n Vậy dẫn đến mâu thuẫn 3.6 Kiểm tra tính ngun tố thuật tốn Millier Cho f : N → R * - hàm số tập số tự nhiên, với f(n)1 Bước Kiểm tra điều kiện sau có thỏa mãn hay khơng n = m s , với s, m ∈ N , s ≥ Nếu thỏa mãn, n hợp số, thuật toán dừng Bước Thuật hiên bước nhỏ (i)-(iii) tất a ≤ f (n) (i) Kiểm tra điều kiện a|n (ii) Kiểm tra điều kiện a n −1 ≠ (mod n) (iii) Kiểm tra xem có hay khơng, với số giá trị k, ≤ k ≤ v2 (n − 1) , n−1 < UCLN (a − 1(mod n), n) < n k Nếu ba điều kiện (i)-(iii) thỏa mãn n hợp số, thuật toán dừng Bước Nếu đến bước n số nguyên tố Chú ý Hàm va (b) số k lớn thỏa mãn a k | b 3.7 Kiểm tra tính nguyên tố số phép kiểm tra xác suất Các phép kiểm tra tính nguyên tố hay dùng thuật toán ngẫu nhiên Giả sử có mệnh đề Q(p,a) với số nguyên tố p số tự nhiên a m / Thuật tốn kiểm tra tính ngun tố số tự nhiên lẻ n>1 Bước Nếu n có dạng a b , a, b ∈ N , b ≥ , thơng báo, n hợp số thuật toán kết thúc Bước r:=2 Bước Đối với giá trị r thực bước 4-8 Bước Nếu r1, n hợp số, thuật tốn kết thúc Bước Nếu r số nguyên tố, hồn thành bước 6-7, ngược lại chuyển đến bước Bước Tìm số q – ước số nguyên tố lớn r-1 Bước Nếu q ≥ r log n n r −1 q ≠ 1(mod r ) , chuyển đến bước với giá trị r cho Bước r:=r+1 Nếu r ≥ n , thơng báo n số nguyên tố, thuật toán kết thúc Ngược lại lặp lại bước Bước [ ] 1) Nếu n − ≤ r log n , tất số a từ khoảng r < a ≤ n − kiểm tra điều kiện UCLN (a, n) = [ ] [ ] 2) Nếu n − > r log n , tất a từ đoạn ≤ a ≤ r log n kiểm tra biểu thức ( x − a ) n ≡ x n − a(mod x r − 1) Z n [ x] Nếu số giá trị a trường hợp hoàn thành bất đẳng thức UCLN(a,n)>1, trường hợp đẳng thức theo modulo x r − khơng n hợp số thuật toán dừng Bước 10 Nếu đên bước n số nguyên tố Kết thúc thuật toán ... định lý xây dựng số nguyên tố lớn Chúng ta xây dựng dãy số nguyên tố p1 < p2 < p3 < , xây dựng số nguyên tố đủ lớn cần Số nguyên tố p1 chọn bất kỳ, ví dụ p1 = Giả sử xây dựng số nguyên tố pi −1... cho n = 2a − Cho nên số n nguyên tố chi m số nguyên tố p Định nghĩa 3.2 Cho p số nguyên tố, M p= − số nguyên tố Và số M p gọi số nguyên tố Mersenn Để kiểm tra tính nguyên tố số Mersenn ta dùng... F1 , n số nguyên tố R1 = L , L2 − 8L1 khơng số phương 3.5 Kiểm tra số nguyên tố thuật toán Konigin-Pomerans Nếu n ∈ N biết phân tích hoàn toàn phần lớn thừa số nguyên tố số n-1, để kiểm tra xem

Ngày đăng: 26/04/2014, 20:53

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan