Chương 3.GIỚI THIỆU MỘT SỐ CHƯƠNG TRÌNH KIỂM TRA SỐ NGUYÊN TỐ TRÊN MÁY TÍNH VÀ ỨNG DỤNG Một nội dung cơ bản trong Số học đó là các nghiên cứu về số nguyên tố.. tiếp tục phát triển và n
Trang 1
BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC VINH
NGUYỄN QUỐC TUẤN
TIÊU CHUẨN VÀ THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ
LUẬN VĂN THẠC SĨ TOÁN HỌC Chuyên ngành: ĐẠI SỐ VÀ LÝ THUYẾT SỐ
Trang 2VINH - 2010
BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC VINH
NGUYỄN QUỐC TUẤN
TIÊU CHUẨN VÀ THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ
LUẬN VĂN THẠC SĨ TOÁN HỌC
Trang 3
Chương 3.
GIỚI THIỆU MỘT SỐ CHƯƠNG TRÌNH KIỂM TRA
SỐ NGUYÊN TỐ TRÊN MÁY TÍNH VÀ ỨNG DỤNG
Một nội dung cơ bản trong Số học đó là các nghiên cứu về số nguyên tố Có
thể nói “Tập hợp số nguyên tố là mỏ vàng của Số học” Đề tài về số nguyên tố vẫn
Trang 4tiếp tục phát triển và ngày càng hấp dẫn đối với các nhà Toán học: Carl Fiedrich Gauss đã dự đoán kết quả của định lý số nguyên tố khi còn là học sinh trung học Chebyshev (1850) đưa ra các chặn cho số số nguyên tố giữa hai giới hạn cho trước Riemann giới thiệu Giải tích phức thành lý thuyết về hàm zeta Riemann và dẫn đến mối quan hệ giữa các không điểm của hàm zeta và sự phân bố số nguyên tố.
Bài toán xác định một số cho trước có phải là số nguyên tố hay không cónhiều ứng dụng trong thực tiễn Đối với những số nhỏ, bài toán đó dĩ nhiên khôngkhó Tuy nhiên khi làm việc với những số lớn, ta cần tìm ra những thuật toán hữuhiệu nghĩa là có thể thực hiện được trên máy tính trong một khoảng thời gian chấpnhận được Khi nói đến “những số lớn” ta thường hiểu là những số nguyên dương
có khoảng 100 chữ số thập phân trở lên Ngày nay, các kết quả của số nguyên tố cóứng dụng trực tiếp trong lý thuyết mật mã và một số lĩnh vực khác
Hiện nay, trong các kỳ thi học sinh giỏi Toán – Tin học Quốc gia và Quốc tếcác bài toán về số nguyên tố là một mảng kiến thức quan trọng trong cấu trúc của
đề thi và để giải được các bài toán đó luôn là trăn trở của mỗi học sinh cũng nhưcác thầy cô giáo đang trực tiếp giảng dạy ở các trường THPT, các trường THPTChuyên trong cả nước
Luận văn “Tiêu chuẩn và thuật toán kiểm tra số nguyên tố” được chia
làm ba chương với những nội dung giới thiệu các kết quả về số nguyên tố; một sốthuật toán và ứng dụng của số nguyên tố trong lý thuyết mật mã
Chương 1: Trình bày các khái niệm cơ bản về số nguyên tố, hợp số, số hoànthiện và một số định lý cơ bản của số học như định lí Wilson, định lí về sự vô hạncủa tập các số nguyên tố, định lí Fermat …và giới thiệu một số các số nguyên tốđặc biệt
Chương 2: Trình bày một số thuật toán kiểm tra số nguyên tố như thuật toánsàng số nguyên tố, phương pháp kiểm tra theo xác suất, các phép kiểm tra tất định
và một số điểm khác có liên quan
Trang 5Chương 3: Giới thiệu một số chương trình kiểm tra số nguyên tố trên máytính và ứng dụng, một số chương trình kiểm tra số nguyên tố; ứng dụng về mật mãhóa khóa công khai và một số bài toán về số nguyên tố.
Tác giả xin bày tỏ lòng biết ơn sâu sắc đến PGS.TS Nguyễn Thành Quang –người đã hướng dẫn, chỉ bảo và giúp đỡ tận tình cho tác giả khi viết luận văn này Tác giả trân trọng cảm ơn PGS TS Ngô Sỹ Tùng, PGS TS Lê Quốc Hán,
TS Nguyễn Thị Hồng Loan đã đọc bản thảo, góp nhiều ý kiến quí báu để tác giảhoàn thành luận văn
Tác giả cảm ơn sự động viên, ủng hộ của Ban Giám hiệu, tập thể giáo viêntrường THPT Đào Duy Từ - TP Thanh Hóa đã tạo điều kiện thuận lợi về mọi mặttrong quá trình công tác, học tập và nghiên cứu
Nội dung của luận văn hướng đến một vấn đề chuyên sâu của Số học, liên hệvới chương trình toán phổ thông và cập nhật về lí thuyết mật mã … Tuy nhiên vớiđiều kiện thực tế và mặc dù đã có nhiều cố gắng nhưng không tránh khỏi nhữnghạn chế và thiếu sót, tác giả mong muốn được sự góp ý và chỉ bảo của thầy, cô vàcác đồng nghiệp
Vinh, ngày 18 tháng 11 năm 2010
Học viên
Nguyễn Quốc Tuấn
CHƯƠNG 1
SỐ NGUYÊN TỐ1.1 CÁC ĐỊNH LÝ VỀ SỐ NGUYÊN TỐ
Trang 61.1.1 Định nghĩa Số tự nhiên p > 1 không có một ước số dương nào khác 1 và
chính nó được gọi là số nguyên tố Số tự nhiên q > 1 có ước số dương khác 1 và chính nó được gọi là hợp số Nếu có số tự nhiên d để n = d 2 thì n được gọi là số chính phương.
1.1.2 Định lý cơ bản của Số học Mọi số tự nhiên lớn hơn 1 đều phân tích được
thành tích những thừa số nguyên tố, và sự phân tích này là duy nhất nếu không kể đến thứ tự của các thừa số.
1.1.3 Định lý Euler Tập hợp tất cả các số nguyên tố là một tập vô hạn.
1.1.4 Định lý về giá trị nguyên tố của một đa thức Không tồn tại đa thức
Chứng minh Với đa thức f x a x0 ma x1 m1 am, hiển nhiên f n 0 1 với
số nguyên dương đủ lớn n0 Chọn số nguyên tố p chia hết f n 0 và khai triển
f n 0 kp f n 0 kpg n p k 0 , ,
Số g n p k 0 , , là số nguyên Như vậy cả ba số hạng trong hệ thức này đều chia hếtcho p với mọi k = 1, 2, … Với k đủ lớn ta có f n 0 kp p và f n 0 kp chia hếtcho p Ta suy ra điều phải chứng minh ■
1.1.5 Định lý Wilson Cho p là số tự nhiên lớn hơn 1, khi đó p là số nguyên tố khi
và chỉ khi (p-1)!+1 chia hết cho p.
1.1.6 Định lý Fermat nhỏ Cho p là số nguyên tố, a tùy ý Khi đó
Trang 710 Số nguyên tố có dạng 10k 1,k (Centered decagonal primes)
11 Số nguyên tố có dạng 7k 1,k (Centered heptagonal primes)
12 Số nguyên tố có dạng 4k 1,k (Centered square primes)
13 Số nguyên tố có dạng 3k 1,k (Centered triangular primes)
1.2.1.1 Số nguyên tố Fermat
Trang 8Số Fermat là một khái niệm trong toán học, mang tên nhà toán học Pháp Pierre de Fermat, người đầu tiên đưa ra khái niệm này Nó là một số nguyên dương
có dạng F n 22n 1, với n là số không âm
F0 = 21 + 1 = 3
F1 = 22 + 1 = 5
F2 = 24 + 1 = 17
F3 = 28 + 1 = 257
F4 = 216 + 1 = 65.537
F5 = 232 + 1 = 4.294.967.297
= 641 × 6.700.417
F6 = 264 + 1 = 18.446.744.073.709.551.617
= 274.177 × 67.280.421.310.721
F7 = 2128 + 1 = 340.282.366.920.938.463.463.374.607.431.768.211.457
= 59.649.589.127.497.217 × 5.704.689.200.685.129.054.721
F8 = 2256 + 1 = 115.792.089.237.316.195.423.570.985.008.687.907.853.269
.984.665.640.564.039.457.584.007.913.129.639.937
= 1.238.926.361.552.897× 93.461.639.715.357.977.769.163. 558.199.606.896.584.051.237.541.638.188.580.280.321
Bảng 1.2.1 Bảng các số Fermat đầu tiên Các công thức thiết lập số Fermat:
Với n ≥ 2 Các hệ thức trên có thể chứng minh bằng cách quy nạp toán học
Ta có thể tính gần đúng số chữ số của chúng bằng hệ thức gần đúng sau:
1.2.1.2 Số nguyên tố Mersenne
Trang 91 Sơ lược về lịch sử số nguyên tố Mersenne
Một số nguyên tố Mersenne là một số nguyên tố có dạng M p 2p 1, trong
đó p là số nguyên tố Bốn số nguyên tố Mersenne đầu tiên là M2 = 3, M3 = 7, M5 =
31 và M7 = 127 đã được biết từ cổ xưa Số thứ năm, M13 = 8191, được tìm thấy vào
trước năm 1461; hai số M17 và M19 tìm được năm 1588 Sau hơn một thế kỷ M31
được kiểm tra bởi Euler vào năm 1750 Số tiếp theo là M127, do E.Lucas tìm thấy
vào năm 1876, sau đó M61 do Pervushin tìm vào năm 1883 Hai số M89 và M107 đượctìm thấy bởi Powers vào năm 1911 và 1914 Số M1398269 phát hiện năm 1996 Từ thế
kỷ 17, các số này được mang tên nhà toán học Pháp Marin Mersenne, người đãchứng minh một loạt các số nguyên tố Mersenne với số mũ lên tới 257 Danh sách
của ông có một số nhầm lẫn như bao gồm cả M67, M257, và bỏ quên M61, M89, M107.Các số nguyên tố lớn nhất được tìm thấy thường là số nguyên tố Mersenne
Các số nguyên tố Mersenne có quan hệ chặt chẽ với các số hoàn thiện Tronglịch sử, việc nghiên cứu các số nguyên tố Mersenne đã từng bị thay đổi do các liên
quan này; vào thế kỷ 4 TCN, Euclid phát biểu rằng nếu M là số nguyên tố
2 Tìm các số nguyên tố Mersenne
Ta biết rằng, nếu Mn là số nguyên tố thì n là số nguyên tố Tuy nhiên, mệnh
đề đảo nói chung là sai Chẳng hạn số Mersenne 2047=2 11 −1 không là nguyên tố vì
nó chia hết cho 89 và 23, mặc dù số 11 là số nguyên tố Điều đó làm giản lược bớtviệc tìm các số nguyên tố Mersenne
Phương pháp tốt nhất để kiểm tra tính nguyên tố của các số Mersenne đượcdựa vào sự tính toán một dãy tuần hoàn, được phát biểu đầu tiên bởi Lucas năm
1878 và chứng minh bởi Lehmer vào những năm 1930 và được gọi là kiểm tra
Trang 10Lucas-Lehmer Đặc biệt, ta có thể chứng minh rằng (với n > 2) Mn = 2 n − 1 là số
nguyên tố nếu và chỉ nếu Mn chia hết cho Sn-2, trong đó S0 = 4 và với k > 0,
nguyên tố Mersenne M521, vào lúc 10:00 P.M ngày 30/1/1952 khi sử dụng máy tính
tự động Western U.S National Bureau of Standards (SWAC) tại Institute forNumerical Analysis thuộc Đại học California tại Los Angeles, dưới sự điều khiểntrực tiếp của Lehmer, sử dụng chương trình viết và chạy bởi GS R.M Robinson
Nó là số nguyên tố Mersenne đầu tiên tìm thấy sau 38 năm; số tiếp theo M607, đã
được tìm thấy do computer này sau gần hai giờ chạy máy Ba số tiếp theo M1279,
M2203, M2281 đã được tìm thấy với cùng chương trình trên sau nhiều tháng nữa Hiện nay đã biết các số nguyên tố Mersenne rất lớn Dù vậy, đến tháng 4năm 2009, chỉ mới biết 47 số nguyên tố Mersenne, số lớn nhất đã biết là số (243 112
609 − 1) Cũng như nhiều số nguyên tố Mersenne trước đó, nó được tìm ra nhờ dự án
tính toán phân tán trên Internet, được biết với tên gọi Tìm kiếm số nguyên tố Mersenne khổng lồ trên Internet.
3 Danh sách các s nguyên t Mersenne ã bi tố nguyên tố Mersenne đã biết ố nguyên tố Mersenne đã biết đã biết ết
Trang 1331 216 091 746093103…815528447 65 05006/09/1985 Slowinski
32 756 839 174135906…544677887 227 83219/02/1992
Slowinski & Gage trên Cray-2 tại Phòng thí nghiệm Harwell
33 859 433 129498125…500142591 258 71610/01/1994 Slowinski & Gage
34 1 257 787 412245773…089366527 378 63203/09/1996 Slowinski & Gage
35 1 398 269 814717564…451315711 420 92113/11/1996 GIMPS / Joel Armengaud
36 2 976 221 623340076…729201151 895 93224/08/1997 GIMPS / Gordon
Spence
37 3 021 377 127411683…024694271 909 52627/01/1998 GIMPS / Roland Clarkson
38 6 972 593 437075744…924193791 2 098 96001/06/1999 GIMPS / Nayan Hajratwala
39 13 466 917 924947738…256259071 4 053 94614/11/2001 GIMPS / Michael Cameron
40 * 20 996 011 125976895…855682047 6 320 43017/11/2003 GIMPS / Michael Shafer
41 * 24 036 583 299410429…733969407 7 235 73315/05/2004 GIMPS / Josh
Findley
Trang 1442 * 25 964 951 122164630…577077247 7 816 23018/02/2005 GIMPS / Martin Nowak
43 * 30 402 457 315416475…652943871 9 152 05215/12/2005 GIMPS / Curtis Cooper & Steven
Boone
44 * 32 582 657 124575026…053967871 9 808 35804/09/2006 GIMPS / Curtis Cooper & Steven
Boone
45 * 37 156 667 202254406…308220927 11 185 27206/09/2008 GIMPS / Hans- Michael Elvenich
46 * 42 643 801 169873516 62314751 12 837 06412/04/2009 GIMPS / Odd M Strindmo
47* 43 112 609 316470269…697152511 12 978 18923/08/2008 GIMPS / Edson Smith
Bảng 1.2.2 Danh sách các số nguyên tố Mersenne đã biết (tính đến tháng 9 năm 2010)
* Cho đến nay vẫn chưa khẳng định được có số nguyên tố Mersenne nào nằmgiữa số thứ 39 (M13466917) và 47 (M43112609) trong bảng mà chưa được phát hiện haykhông, do đó thứ tự các số đó là tạm thời Một ví dụ là số thứ 29 được phát hiện rasau số thứ 30 và 31, số thứ 47 cũng được công bố trước số 45 hai tuần
* Để hình dung độ lớn của số nguyên tố lớn nhất được tìm thấy (số thứ 47), tacần có 3461 trang giấy để biểu diễn số đó với các chữ số trong hệ cơ số 10, 75 chữ
số một dòng và 50 dòng một trang
* Tính tới tháng 8 năm 2005, mới chỉ biết các số nguyên tố Mersenne kép
: 7, 127, 2147483647, 170141183460469231731687303715884105727
1.2.1.3 Số nguyên tố Ramanujan
Trang 15Số nguyên tố Ramanujan là tên gọi các số nguyên tố thỏa mãn một kết quả
do nhà toán học Ấn Độ Srinivasa Ramanujan tìm ra
Nguồn gốc và định nghĩa Năm 1919, Ramanujan công bố một cách chứng
minh định đề Bertrand Ở phần cuối công bố này (chỉ hai trang), Ramanujan rút ra
thêm một kết luận nữa: π(x) − π(x / 2) ≥ 1, 2, 3, 4, 5, nếu x ≥ 2, 11, 17, 29, 41, trong đó hàm π(x) là số các số nguyên tố không lớn hơn x.
Kết quả này, khi đọc ngược lại, trở thành định nghĩa của số nguyên tố
Ramanujan Nói cách khác: Số nguyên tố Ramanujan là các số Rn sao cho Rn là số nhỏ nhất thỏa mãn điều kiện π(x) − π(x / 2) ≥ n, cho mọi x ≥ R n
Nói cách khác nữa: Số nguyên tố Ramanujan là các số nguyên Rn sao cho Rn
là số nhỏ nhất có thể bảo đảm có n số nguyên tố giữa x và x/2 cho mọi x ≥ Rn
Vì Rn là số nguyên nhỏ nhất thỏa mãn điều kiện trên, nên Rn phải là số nguyên tố Mỗi khi hàm π(x) − π(x / 2) tăng lên 1, đó là do có thêm một số nguyên
tố nữa và các số nguyên tố Ramanujan đầu tiên là: 2, 11, 17, 29, 41
1.2.1.4 Số nguyên tố Chen
Số nguyên tố p được gọi là số nguyên tố Chen (Trần) nếu p + 2 cũng là số
nguyên tố hoặc là tích của hai số nguyên tố
Vào năm 1966, Trần Cảnh Nhuận (Chen Jingrun) đã chứng minh rằng có vô
hạn số nguyên tố như vậy Rudolf Ondrejka (1928-2001) đã tìm được một hìnhvuông kỳ ảo 3x3 của 9 số Chen
17 89 71
113 59 5
47 29 101
Tháng 10 năm 2005, Micha Fleuren và nhóm PrimeForm đã tìm thấy sốnguyên tố Chen lớn nhất hiện nay (1284991359·298305 + 1)·(96060285·2135170 + 1) −
2 với 70301 chữ số
Trang 16Một số số nguyên tố Chen đầu tiên:
Có giả thiết cho rằng các số nguyên tố họ hàng có mật độ tiệm cận giống nhưcác số nguyên tố sánh đôi Một hằng số tương tự hằng số Brun cho các số nguyên
tố sánh đôi cho các số nguyên tố họ hàng, bắt đầu với (3, 7):
Khi dùng các số nguyên tố họ hàng tới 242, có giá trị của B4 được tính bởi
Marek Wolf năm 1996 là B4 ≈ 1.1970449 (Cần tránh nhầm lẫn hằng số này với
hằng số Brun's cho các số nguyên tố bộ bốn, cũng được kí hiệu là B4)
Các cặp số nguyên tố họ hàng đầu tiên là:
(3, 7), (7, 11), (13, 17), (19, 23), (37, 41), (43, 47), (67, 71), (79, 83), (97, 101),(103, 107), (109, 113), (127, 131), (163, 167), (193, 197), (223, 227), (229, 233),(277, 281), (307, 311), (313, 317), (349, 353), (379, 383), (397, 401), (439, 441),(457, 461), (487, 491), (499, 503), (613, 617), (643, 647), (673, 677), (739, 743),(757, 761), (769, 773), (823, 827), (853, 857), (859, 863), (877, 881), (883, 887),(907, 911), (937, 941),
1.2.1.6 Số nguyên tố giai thừa
Trang 17Số nguyên tố giai thừa là một số nguyên tố nhỏ hơn hoặc lớn hơn một, so vớimột giai thừa hoặc chính nó là một giai thừa
Ta hiểu là: 2=2!; 3=2!+1; 5= 3!-1; 7 = 3!+1; 23=4!-1; 719=6!-1;5039=7!-1;
39916801 = 11!+1; 479001599= 12!+1; 87178291199 = 14!+1,
Số nguyên tố giai thừa duy nhất đúng là giai thừa, chỉ là số 2=2! Các sốnguyên tố giai thừa được quan tâm trong lý thuyết số vì chúng vắng mặt trong dãyliên tiếp các hợp số Chẳng hạn số nguyên tố tiếp theo 6227020777 = 13! − 23 là
6227020867 = 13! + 67 và giữa 2 số này có 89 hợp số liên tiếp
Nếu n là một số tự nhiên và p là một số nguyên tố, thì n! + p không thể là nguyên tố với p < n, vì nó là một bội của p, cũng như chính n! Nhưng n! + 1, chỉ chắc chắn là bội của 1, vẫn có thể là số nguyên tố (Điều này cũng đúng với n!- p
Trang 18Bảng 1.2.3 Bảng khảo sát tính nguyên tố của 25 số Fibonacci đầu tiên
Hiện tại, số nguyên tố Fibonacci lớn nhất được biết là F81839, với 17103 chữsố; số lớn nhất có khả năng lá nguyên tố Fibonacci là F604711, với 126377 chữ số.Chưa biết chắc rằng có thể có vô hạn số nguyên tố Fibonacci không
Trang 19Tính chia hết của các số Fibonacci với chỉ số nguyên tố Các số Fibonacci có chỉ số p nguyên tố không có ước chung lớn hơn 1 với các số Fibonacci khác, đó là
vì ƯCLN(Fn, Fm) = FƯCLN(n,m) Với n ≥ 3, Fn chia hết Fm nếu n chia hết m.
Định lý Carmichael khẳng định rằng mọi số Fibonacci với chỉ số lớn hơn 12
có ít nhất một ước nguyên tố không là ước của các số Fibonacci nào đứng trước nó
1.2.1.8 Số nguyên tố Gauss
Một số nguyên Gauss là một số phức với phần thực và phần ảo đều là các số
nguyên Tập các số nguyên Gauss là một miền nguyên, được ký hiệu là Z[i].
Hình 1.2.4 Hình biểu diễn các số nguyên tố Gauss trên mặt phẳng phức
Các số nguyên Gauss là các điểm nguyên trên mặt phẳng phức
Như vậy, các số nguyên Gauss là tập hợp a bi a b ,
Chuẩn của số nguyên Gauss là số tự nhiên xác định bằng N(a + bi) = a2 + b2
Chuẩn có tính chất nhân, nghiã là N(z·w) = N(z)·N(w).
Đơn vị của Z[i] là tất cả các phần tử có chuẩn bằng 1, gồm 1, −1, i và −i.
Các phần tử nguyên tố của Z[i] cũng được gọi là các số nguyên tố Gauss Một vài
số nguyên tố thông thường (đôi khi để phân biệt, chúng được gọi là các "số nguyên
tố hữu tỷ") không phải là các số nguyên tố Gauss; chẳng hạn 2 = (1 + i)(1 − i) và
5 = (2 + i)(2 − i) Các số nguyên tố hữu tỷ đồng dư với 3 (mod 4) là số nguyên tố
Trang 20Gauss; còn các số nguyên tố hữu tỷ đồng dư 1 (mod 4) thì không Đó là vì số
nguyên tố dạng 4k + 1 luôn có thể viết dưới dạng tổng của hai bình phương (định lý Fermat), do đó ta có p = a2 + b2 = (a + bi)(a − bi).
Nếu chuẩn của số nguyên Gauss z là một số nguyên tố, thì z cũng là số nguyên tố Gauss, vì mọi ước không tầm thường của z cũng là ước không tầm thường của chuẩn Chẳng hạn 2 + 3i là một số nguyên tố Gauss vì chuẩn của nó là
Trong toán học, số nguyên tố chính quy là một loại số nguyên tố do Ernst
Kummer định nghĩa: Một số nguyên tố p được gọi là chính quy nếu không tồn tại bất cứ một tử số nào của số Bernoulli Bk (k = 2, 4, 6, …, p − 3.) chia hết cho p
Có giả thuyết là có vô hạn số nguyên tố chính quy Một giả thuyết khác của
nhà toán học (Siegel, 1964) rằng e−1/2, hay khoảng 61% các số nguyên tố là chínhquy Cả 2 giả thuyết này vẫn chưa có ai chứng minh được cho đến 2008
Trong lịch sử Ernst Kummer đã tìm ra loại số này khi đang cố gắng chứngminh định lý lớn Fermat là đúng với số mũ là tích của các số này
Trái lại với số nguyên tố chính quy là số nguyên tố phi chính quy Nếu tồn
tại một tử số của số Bernoulli Bk mà chia hết cho p thì p được gọi là số nguyên tố
phi chính quy K L Jensen đã cho thấy có vô số phi chính quy
Dưới đây là bảng liệt kê một số số nguyên tố chính qui
3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 41, 43, 47, 53, 61, 71, 73, 79, 83, 89, 97, 107,
109, 113, 127, 137, 139, 151, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211,
Trang 22Các số nguyên tố song sinh
Với p là số nguyên tố, cặp số (p,p+2) gọi là cặp số nguyên tố song sinh.
(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103),(107, 109), (137, 139), (149, 151), (179, 181), (191, 193), (197, 199), (227, 229),(239, 241), (269, 271), (281, 283), (311, 313), (347, 349), (419, 421), (431, 433),(461, 463), (521, 523), (569, 571), (599, 601), (617, 619), (641, 643), (659, 661),(809, 811), (821, 823), (827, 829), (857, 859), (881, 883), (1019, 1021), (1031,1033), (1049, 1051), (1061, 1063), (1091, 1093), (1151, 1153), (1229, 1231),(1277, 1279), (1289, 1291), (1301, 1303), (1319, 1321), (1427, 1429), (1451,1453), (1481, 1483), (1487, 1489), (1607, 1609), (1619, 1621), (1667, 1669),
Trang 2316069), (18041, 18043, 18047, 18049), (18911, 18913, 18917, 18919), (19421,
19423, 19427, 19429), (21011, 21013, 21017, 21019), (22271, 22273, 22277,22279), (25301, 25303, 25307, 25309), (31721, 31723, 31727, 31729), (34841,
34843, 34847, 34849), (43781, 43783, 43787, 43789), (51341, 51343, 51347,51349), (55331, 55333, 55337, 55339), (62981, 62983, 62987, 62989), (67211,
67213, 67217, 67219), (69491, 69493, 69497, 69499),
Các bộ ba số nguyên tố
(5, 7, 11), (7, 11, 13), (11, 13, 17), (13, 17, 19), (17, 19, 23), (37, 41, 43), (41, 43,47), (67, 71, 73), (97, 101, 103), (101, 103, 107), (103, 107, 109), (107, 109, 113),(191, 193, 197), (193, 197, 199), (223, 227, 229), (227, 229, 233), (277, 281, 283),(307, 311, 313), (311, 313, 317), (347, 349, 353), (457, 461, 463), (461, 463, 467),(613, 617, 619), (641, 643, 647), (821, 823, 827), (823, 827, 829), (853, 857, 859),(857, 859, 863), (877, 881, 883), (881, 883, 887)
Trang 24CHƯƠNG 2TIÊU CHUẨN VÀ THUẬT TOÁN KIỂM TRA SỐ NGUYÊN TỐ
Kiểm tra tính nguyên tố là bài toán kiểm tra xem một số tự nhiên n có phải là
số nguyên tố hay không Bài toán này đặc biệt trở nên quan trọng khi các hệ mật
mã hóa khoá công khai ra đời Chúng ta sử dụng các tiêu chuẩn về số nguyên tố, đólà: Định lí Wilson, Định lí Fermat bé
2.1 CÔNG THỨC VÀ THUẬT TOÁN SÀNG SỐ NGUYÊN TỐ
2.1.1 Sơ lược về Sàng Eratosthenes
Phương pháp đơn giản nhất để kiểm tra một số n có là số nguyên tố không, là kiểm tra xem nó có chia hết cho các số m nằm trong khoảng 2 đến n − 1 hay không Nếu n chia hết cho một số m nào đó thì n là hợp số, ngược lại n là số nguyên tố.
Thực ra việc kiểm tra với m từ 2 đến n − 1 là không cần thiết, chỉ cần kiểm tra đến n , bởi vì nếu n là hợp số thì chắc chắn có ước số không vượt quá n
Cũng có thể bỏ qua việc kiểm tra trường hợp m = 2 bằng cách chỉ xét các số
lẻ Đi xa hơn một chút, ta chỉ cần xét các số dạng và bỏ qua việc kiểm tra 2
trường hợp m = 2 và m = 3 Đó là vì tất cả các số nguyên đều có dạng 6k + i với k
nào đó và i 0, 1,2,3, 4 mà trong đó 6k + 0, 6k + 2, 6k + 4 chia hết cho 2, còn 6k +
3 thì chia hết cho 3 Từ đó, ta có thể tổng quát hóa thành thuật toán sàngEratosthenes
Sàng Eratosthenes là một thuật toán để tìm các số nguyên tố nhỏ hơn n.
Thuật toán này do nhà toán học cổ Hy Lạp là Eratosthenes phát minh ra
Trang 25Thuật toán cụ thể của sàng là:
const int MAX_N = 10000;
Trang 26Hình 2.1.1 Hình minh họa cho thấy thuật toán đơn giản để tìm số nguyên tố và các bội số
2.1.4 Viết chương trình sàng Eratosthenes theo ngôn ngữ lập trình Pascal
Trang 272.2 PHƯƠNG PHÁP KIỂM TRA NGUYÊN TỐ THEO XÁC SUẤT
Các phép kiểm tra tính nguyên tố hay dùng nhất là các thuật toán ngẫu nhiên
Giả sử có một mệnh đề Q(p,a) nào đó đúng với mọi số nguyên tố p và một số tự nhiên a p Nếu n là một số tự nhiên lẻ và mệnh đề Q(n,a) đúng với một a n được lấy ngẫu nhiên, khi đó a có khả năng là một số nguyên tố Một thuật toán, kết luận rằng n là số nguyên tố là một thuật toán ngẫu nhiên hay thuật toán xác suất
Trong các thuật toán loại này, xác suất sai của phép kiểm tra có thể giảm
xuống nhờ việc chọn một dãy độc lập các số a; nếu với mỗi số a xác suất để thuật toán kết luận một hợp số là số nguyên tố là nhỏ hơn một nửa thì sau k lần thử độc
lập, xác suất sai là nhỏ hơn 2−k, độ tin cậy của thuật toán sẽ tăng lên theo k.
2.2.1 Cấu trúc cơ bản của phép kiểm tra ngẫu nhiên
Cấu trúc cơ bản của một phép kiểm tra ngẫu nhiên là:
1 Chọn một số ngẫu nhiên a.
2 Kiểm tra một hệ thức nào đó giữa số a và số n đã cho Nếu hệ thức sai thì
n là một hợp số (số a là "bằng chứng" chứng tỏ n là hợp số) và dừng thuật toán.
3 Lặp lại bước 1 cho đến khi đạt được số lần đã định hoặc gặp bước 2
Sau một loạt lần kiểm tra, nếu không tìm được bằng chứng chứng tỏ n là hợp số thì
ta kết luận n là số nguyên tố.
2.2.2 Các phép kiểm tra tính nguyên tố ngẫu nhiên
Phép kiểm tra tính nguyên tố của Fermat, đây là phép thử heuristic, tuy nhiên
ít người sử dung phép thử này Được sử dụng nhiều hơn là Kiểm tra Miller-Rabin
và Kiểm tra Solovay-Strassen Với mỗi hợp số n, ít nhất 3
4 (kiểm tra Miller-Rabin)
hoặc 1
2 (kiểm tra Solovay-Strassen) các số a chứng tỏ n là hợp số.
2.2.2.1 Kiểm tra Fermat
Trang 28Kiểm tra Fermat là một thuật toán xác suất kiểm tra một số tự nhiên là hợp
số hay là số nguyên tố xác suất
1 Sơ lược về kiểm tra Fermat
Nếu ta muốn kiểm tra số n có là nguyên tố không, ta lấy ngẫu nhiên các số a'
và kiểm tra theo định lí Fermat Nếu nó không đúng với một giá trị a nào đó thì n là hợp số Nếu đẳng thức đúng với nhiều giá trị của a, ta có thể nói rằng n là số
nguyên tố với xác suất nào đó, hay là một số giả nguyên tố
2 Thuật toán và thời gian thi hành
Thuật toán có thể viết như sau:
Inputs: n: giá trị để kiểm tra tính nguyên tố;
k: tham số tham gia vào quá trình kiểm tra
Output: hợp số nếu n là hợp số, nếu không nguyên tố xác suất
repeat k times:
lấy a ngẫu nhiên trong [1, n − 1]
if a n − 1 mod n ≠ 1 then
return composite
return probably prime
Khi dùng thuật toán tính nhanh luỹ thừa theo mođun, thời gian thi hành của
thuật toán là O(k × log3n), ở đó k là số lần kiểm tra với mỗi số a ngẫu nhiên, và n là
giá trị ta muốn kiểm tra
3 Khả năng vận dụng
Có khá nhiều giá trị của n là các số Carmichael mà với tất cả các giá trị của a sao cho ƯCLN(a,n) = 1 là giả Fermat Mặc dù các số Carmichael là rất hiếm,
Trang 29nhưng phép thử Fermat rất ít được dùng so với các phương pháp khác như kiểm traMiller-Rabin hay kiểm tra Solovay-Strassen.
Nói chung, nếu n không là số Carmichael thì ít nhất một nửa các số
/
a n là bằng chứng Fermat
Bằng chứng Fermat được hiểu là: nếu có số a mà a n 1 1 mod n
,thì a được xem như một bằng chứng Fermat chứng tỏ n là hợp số.
2.2.2.2 Kiểm tra Miller-Rabin
1 Sơ lược về kiểm tra Miller-Rabin
Kiểm tra Miller-Rabin là một thuật toán xác suất để kiểm tra tính nguyên tốcũng như các thuật toán kiểm tra tính nguyên tố: Kiểm tra Fermat và Kiểm traSolovay-Strassen Nó được đề xuất đầu tiên bởi Gary L Miller như một thuật toántất định, dựa trên giả thiết Riemann tổng quát; Michael O Rabin đã sửa chữa nóthành một thuật toán xác suất
Khi sử dụng kiểm tra Miller-Rabin chúng ta căn cứ vào một mệnh đề Q(p,a) đúng với các số nguyên tố p và mọi số tự nhiên a A và kiểm tra xem chúng
có đúng với số n muốn kiểm tra và một số được chọn ngẫu nhiên hay
không? Nếu mệnh đề Q(n,a) không đúng, thì n không phải là số nguyên tố, còn nếu Q(n,a) đúng, số n có thể là số nguyên tố với một xác suất nào đó Khi tăng số lần thử, xác suất để n là số nguyên tố tăng lên.
2 Tiêu chuẩn Miler-Rabin
Giả sử p là một số nguyên tố lẻ, khi đó p - 1 là số chẵn và ta có thể viết p − 1
dưới dạng , trong đó s * và m' là số lẻ - Điều này nghĩa là ta rút hết các thừa số 2 khỏi p − 1 Lấy số a bất kỳ trong tập {1,2, ,p-1} Xét dãy số 2 k m
k
x a với k = 0,1,2, ,s Khi đó xk = (xk − 1)2, với k = 1,2, ,s và xs = p.
Trang 30Nếu x s1 1 mod p , ta dừng lại, còn nếu ngược lại ta tiếp tục với xs − 2.
Sau một số hữu hạn bước, hoặc ta có một chỉ số k, 0 k s 1,sao cho
1 mod
k
x p , hoặc tới k = 0 ta vẫn có x k 1 mod p
Ta có mệnh đề Q(p,a) như sau:
Nếu p là số nguyên tố lẻ và p 1 2 s m thì với mọi a: 0 < a < p -1:
Định nghĩa: Hợp số n thoả mãn a p1 1 mod p
với a nào đó được gọi là sốgiả nguyên tố Fermat cơ sở a
Định nghĩa: Hợp số n được gọi là số giả nguyên tố mạnh Fermat cơ sở a nếu
nó thoả mãn mệnh đề Q(n,a)
Số Carmichael: Hợp số n là số giả nguyên tố Fermat với mọi cơ sở a
{1, ,n}, ƯCLN(a,n) = 1 được gọi là số Carmichael.
4 Thuật toán kiểm tra Miller-Rabin
Miller-Rabin test
INPUT Số tự nhiên lẻ n.
OUTUT NguyenTo: TRUE/FALSE
Phân tích n 1 2 s m trong đó s 1 và m là số tự nhiên lẻ
Chọn ngẫu nhiên số tự nhiên a {2, ,n-1}.
Trang 31Thay b:=b2(mod n).
Trả lời FALSE Kết thúc
5 Xác suất sai
Tiêu chuẩn kiểm tra Q(n,a)
Trước hết là một bổ đề về căn bậc hai của đơn vị trong trường hữu hạn p,
trong đó p là số nguyên tố Chắc chắn rằng 1 và -1 luôn là các căn bậc hai của 1 theo mođun p Chúng là hai căn bậc hai duy nhất của 1.
Định lý: Nếu n là hợp số dương lẻ thì trong các số a {2, ,n-1} tồn tại không quá
1
4
n cơ sở a để n là số giả nguyên tố mạnh Fermat.
Gọi A là biến cố "Số n là hợp số" B là biến cố "Kiểm tra Miller-Rabin trả lời n là số nguyên tố" Khi đó xác suất sai của kiểm tra này là xác suất để số n là
hợp số trong khi thuật toán cho câu trả lời TRUE, nghĩa là xác suất điều kiện P(A|B)
Theo định lý trên nếu n là hợp số thì khả năng kiểm tra này trả lời TRUE xảy
ra với xác suất không vượt quá 1
4 , nghĩa là P(B|A)
14
Tuy nhiên để tính xác suất
sai của kiểm tra Miller-Rbin cần tính xác suất diều kiện P(A|B) Ta đưa ra ước
4
, còn P B A = 1 vì khi n là \
số nguyên tố thì chắc chắn mệnh đề Q(n,a) là đúng và P A 1 P A ln2n