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ố
Trang 1Chương 3
KIỂM TRA VÀ XÂY DỰNG SỐ NGUYÊN TỐ
Dựa vào tính chất đặc biệt của số nguyên tố, mà khi xây dựng một số bài toán với việc áp dụng số nguyên tố, đặc biệt là ứng dụng số nguyên tố lớn, nó trở nên hữu ích cho mục đích bài toán Trong chương này chúng ta đi tìm hiểu cách kiểm tra một số nguyên
tố cho trước và làm thế nào để xây dựng được số nguyên tố lớn.
3.1 Khái niệm về số nguyên tố
Số tự nhiên p, lớn hơn 1 gọi là số nguyên tố nếu như nó chia hết cho 1 và chính nó Định lý cơ bản của số học nói rằng, bất kỳ số tự nhiên n, lớn hơn 1 có thể phân tích thành tích các số nguyên tố Tức là một số tự nhiên có thể biểu diễn dưới dạng sau
k
k
p p
n 1 1
ở đây p1p2 p k - là các số nguyên tố khác nhau, 1, , kN
Bài toán kiểm tra số nguyên tố và xây dựng số nguyên tố lớn có ứng dụng rất quan trọng trong mã hóa Trong phần này tác giả viết về các thuật toán khác nhau để giải quyết những bài toán này
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 là số nguyên tố hay không
Phương pháp thử chia
Nếu như n là hợp số, thì n=ab, với 1 a b, điều kiên là a n Cho nên đối với
n
d 2 , 3 , , chúng ta kiểm tra xem n có chia hết cho d hay không? Nếu như ước số của
n không tìm thấy, thì n là số nguyên tố, ngược lại thì n là hợp số, và ta có thể phân tích n thành 2 thừa số Độ phức tạp của phương pháp này làO ( n)
Sàng Eratosphen
Nếu như chúng ta muốn thiết lập bảng tất cả các số nguyên tố giữa các số 2,3,…,N, thì đầu tiên cần gạch chân các số chia hết cho 2 ngọai trừ số 2 Sau đó ta lấy các số 3 và gạch chân các số tiếp theo và chia hết cho 3 Sau đó chúng ta chọn số tiếp theo và không gạch chân (có nghĩa là 5), và tiếp tục gạch chân các số chia hết cho 5, và tiếp tục như thế
Và cuối cùng chúng ta có được dãy các số nguyên tố Phương pháp này thì tốn nhiều bộ nhớ, nhưng để thành lập bảng nguyên tố thì đây là cách hiệu quả nhất
3.3 Kiểm tra tính nguyên tố của số có dạng đặc biệt
Trang 2Chúng ta xem số n dạng n 2 m 1, ở đây m N Nếu m chia hết cho số nguyên tố
2
p , tức là mpm1,m1 1, thì n(2m1)p 1 chia hết cho 2m1 1, có nghĩa là n là hợp
số Cho nên số nguyên tố có thể chỉ khi m 2k
Định nghĩa 3.1 Số 2 2 1 , 0 , 1 , 2 , ,
F k k gọi là số Fermat
Hiện tại chúng ta biết được rằng F0 ,F1 ,F2 ,F3 ,F4là số nguyên tố, còn các số Fermat tiếp theo 5 k 32 là hợp số, còn các số tiếp theo thì chưa được kiểm tra
Để kiểm tra tính nguyên tố của số Fermat chúng ta xem định lý sau
Định lý 3.1 Số n F k khi k>0 là số nguyên tố khi và chỉ khi:
) (mod 1
1
n
n
Chứng minh: Chúng ta chứng minh điều kiện đủ Chúng ta có: k
n 1 2 2 Từ
) (mod
1
1
n
n
, nên 3 1 1 (mod )
n
n
, điều này có nghĩa là bậc của 3 (mod n) bằng
k
n 1 2 2 Nên nhóm nhân *
n
Z có ít nhất là n-1 phần tử, và các phần tử khác không của
Zn khả nghịch, hay n là số nguyên tố
Bây giờ ta chứng minh phần nghịch Chú ý rằng 2 2 4 2 1 1 (mod 3 )
k
k
Bởi vậy n>3, )
4 (mod 1 ),
3
(mod
n Theo định luật bình phương (định lý Gausse) ta có
1 3
2 3 )
1 (
3
n
n
Theo tiêu chuẩn Euler thì 3 3 2 (mod )
1
n n
n
Kiểm tra theo định lý này độ phức tạp là O (log n), thế nhưng số Fermat tăng lên rất nhanh, nên cách kiểm tra này trở nên không hiệu quả
Bây giờ chúng ta xem số n dạng n 2 m 1 Nếu m là hợp số, m=ab, 1 a b, thì 1
2
ab
n chia hết cho n 2 a 1 Cho nên số n là nguyên tố chi khi m là số nguyên tố
Định nghĩa 3.2 Cho p là số nguyên tố, và M p 2 p 1 cũng là số nguyên tố Và số
p
M gọi là số nguyên tố Mersenn
Để kiểm tra tính nguyên tố của số Mersenn ta dùng định lý sau
Định lý 3.2 Cho q là số nguyên tố, q>2, n 2 q 1 Chúng ta xem dãy L0,L1,L2, ,
xác định dãy này như sau
4
0
Số n là số nguyên tố khi và chỉ khi L q2 0 (modn)
Trang 3Định lý 3.3 Cho p là số nguyên tố, p 3 (mod 4 ), M p 2 1 Số Fermat F p là số nguyên tố khi và chi khỉ
) (mod 1
2 / ) 1 (
p
F
Chứng minh: Theo định lý nhỏ Fermat ta có 2 2 1 2 (mod )
p
M
p
, từ đây )
(mod 5 1 2
.
2 2 1
p
F p Dẫn đếnUCLN(F p,M p) 1, và dẫn đến
) (mod 5
5
2 1
p p
p p
p p
p F
F
M M
M
F F
M M
p
5
2 5
), 5 (mod 2 ) 5 (mod 1 2 1
p
M M
Định nghĩa 3.3 (dãy số Liuka) Cho dãy số u0,u1,u2, và v0,v1,v2, , với
4 , 2 ,
1
,
0 u v v
u , còn các thành phần tiếp theo của dãy được tính theo công thức truy hồi x j1 4x j x j1, được gọi là dãy số Liuka
3.4 Phương pháp N 1 kiểm tra tính nguyên tố và xây dựng số nguyên tố lớn
Trong mục này chúng ta sẽ tìm hiểu một số phương pháp, mà với sự giúp đỡ của nó chúng ta có thể kiểm tra tính nguyên tố của số tự nhiên N, khi biết được hoàn toàn hoặc một phần của sự phân tích N ra thừa số Và chúng ta cũng tìm hiểu một số phương pháp tạo ra số nguyên tố lớn được áp dụng trong mật mã
Đầu tiên chúng ta xem phương pháp N-1 kiểm tra số nguyên tố
Định lý 3.4 Cho nN, n 1, n là số lẻ,
k
i
i i
p n
1
- đã biết được sự phân chia thành thừa số nguyên tố của n-1 Nếu như đối với mỗi i 1 , ,k tồn tại số a iN , sao cho
) (mod 1
a n
i , a p i1 1(modn)
n
i
, thì n là số nguyên tố
Chứng minh:
Cho m i là bậc của a i (mod n) trongZ n Từ điều kiện chúng ta có m i| n 1, và m i
không là ước của
i
p
n 1 , cho nên p ii |m i
với i=1,…,k Dẫn đến b a i (modn)
i
p m i i
i
i
p
trong *
n
Z , còn phần tử bb1 b k(modn)có bậc là 1 1
1 p n
k
trong *
n
Z Điều này có nghĩa là Z nlà một trường, và n là số nguyên tố
Trang 4Từ định lý này chúng ta có thể kiểm tra được tính nguyên tố như sau Phân tích n-1 ra thừa số, chọn a=2,3,…, kiểm tra điều kiện định lý Nếu như tìm thấy a nào đó, với
n
a
1 , mà a n 1 1 (modn)
, thì n là hợp số Nếu như tìm được a , ,1 a k, mà thỏa mã điều kiện định lý thì n là số nguyên tố
Tương tự với việc kiểm tra số nguyên tố bằng phương pháp n-1, ta tìm hiểu phương pháp n+1 khi biết hoàn toàn các nhân tử nguyên tố của n+1
Định lý 3.5 Cho P,QZ, 2 4 0
D Xác định dãy số Liuka u0,u1, và định thức D bằng các biểu thức sau: u0 0 ,u1 1 ,u j2 Pu j1 Qu jđiều kiện là j 0 Cho n là
một số tự nhiên lẻ, n>1,
k
i
i i
q n
1
- tức là phân tích n+1 ra thừa số nguyên tố, và
1
n
D
Nếu như đối với từng i 1 , ,k , tìm được P i,Q i Z,D P i2 4Q i
quan hệ với dãy số Liuka , ) ,
1 ) ( 0
i
i u
u thỏa mãn điều kiện:
) 1
n
u
n và n không là ước của )
/ ) 1 (n i q i
u , thì n là số nguyên tố Nếu như tồn tại dãy số Liuka u j như thế và D, sao cho u n 1 không chia hết cho n, thì n là hợp số
Định lý 3.6 Cho n N , n>1, n là số lẻ, n 1 F1 R1, với UCLN(F1,R1) 1 Giả sử
chúng ta biết được hoan toàn sự phân tích ra thừa số nguyên tố
k j j
j q F
1 1
Nếu như đối với mỗi j=1,…,k tìm được a jN, sao cho
) (mod 1 1
n
a n
j , UCLN(a(n1)/q j 1 ,n) 1
j
với điều kiện F 1 n, thì số n là số nguyên tố
Chứng minh: Giả sử p là ước số nguyên tố của n Chúng ta chứng minh rằng p n,
từ đây dẫn đến n là số nguyên tố
Từ điều kiện chúng ta có a n 1 1 (modn)
j
dẫn đếna n 1 1 (modp)
j
, từ đây
1 )
,
(a p
UCLN j và bậc e j của phần tử a j (mod p)trong Z p không là ước của n-1 Ngoài ra theo định lý nhỏ Fermat thì e j | (p 1 ) Từ điều kiện của định lý ta có
) (mod
1
/
)
1
(
p
j , từ đây qj j |e j
Dẫn đến q j | (p 1 )
j
, và | ( 1 )
1
1
p q
j j
j
Nghĩa là
n F p
F
Trang 5Chúng ta sẽ chứng minh với sự giúp đỡ của định lý này có thể xây dựng được số nguyên tố lớn Chúng ta xây dựng dãy số nguyên tố p1 p2 p3 , cho đến khi xây dựng được số nguyên tố đủ lớn chúng ta cần Số nguyên tố p1 chọn bất kỳ, ví dụ p1 3 Giả sử chúng ta đã xây dựng được số nguyên tố p i 1 Chọn số ngẫu nhiên r,
1
1 r p i1 Giả sử: r 2s t, t là số lẻ Như thế số nguyên tố p i chúng ta chọn
1 2
1
rp p t
1
1 2
s p i
F , R 1 t Rõ ràng rằng UCLN(F1,R1) 1
1
2 1
2 1
2 1
i
s i
s
chứng tỏ n là số nguyên tố, chúng ta cần tìm các số a1 và a2, sao cho
) (mod 1
1 2
1
1 2 2
1
n a
UCLN n
a
n n
Nếu như ta tìm được số a, sao choa n 1 1 (modn)
, thì n là hợp số và chúng ta cần chọn số ngẫu nhiên r khác Nếu như chúng ta chứng minh được n là nguyên tố thì đặt
n
p i
Một phương pháp khác xây dựng số nguyên tố ứng dụng định lý trên có thể nêu ra dưới đây Chúng ta lại xây dựng dãy số nguyên tố, và giả sử xây dựng p i1 3 Chúng ta chọn số chẵn ngẫu nhiên r, thỏa mãn 1 r p i1 3, và đặt np i1r 1 Giả sử
1
1 p i
F , R 1 r, UCLN(F1,R1) 1.Chúng ta cần tìm một số tự nhiên a sao cho
1 ) , 1 ( ),
(mod
1
1
p
n
i
1
1 ) Rõ ràng ta có bất đẳng thức
n
p
F1 i1 , bởi vì
2 1 1
2 1 1
1
1 1 ( 3 ) 1 3 1
p i r p i p i p i p i p i n
Chọn a và thực hiện tương tự như phương pháp xây dựng trên
Định lý tiếp theo sẽ cho chúng ta cách xây dựng số nguyên tố hiệu quả hơn, bởi vì không cần tính toán ước nguyên tố lớn
Định lý 3.7 Cho n 2rq 1, ở đây q là số nguyên tố lẻ, và r với r 2 q 1 Nếu tồn tại
số a N, sao cho
) (mod 1
a n
, a2r 1 (modn)
thì n là số nguyên tố
Chứng minh Giả sử n là hợp số, n pN , với p là số nguyên tố, N 1 Bởi vì n không
là ước của a2r 1, nên tồn tại số nguyên tố p sao cho ( ) ( 2 1 )
p r
p n a
1 1 ) 1
( 2
p a r
s chúng ta có p s|n và p skhông là ước của a2r 1
Trang 6Giả sử d là bậc của a (mod p s) trongZ p S Số d được xác định và d|n-1=2rq, bởi vì
) (mod
1
a n
Ngoài ra ta có | ( ) 1 ( 1 )
p p p
Nhưng từ biểu thức
) (mod
1
2r p s
a dẫn đến d không là ước của 2r Nghĩa là q|d Bởi vì | 1 ( 1 )
p p
và p khác nhau, bởi vì p|n, q|n-1 Dẫn đến q|p-1 Từ đây p 1 (modq), và do tính lẻ của p
và q nên p 1 (mod 2q) Ngoài ra n 1 (mod 2q) Bởi vì n=pN, nên N 1 (mod 2q) Bởi
vì p 1và N 1, nên p 1 2q,N 1 2q Nghĩa là npN ( 1 2q) 2 Thế nhưng
2 ) 2 1 ( 1 ) 1 2 ( 2
1
n Nhận được mâu thuẩn Nên định lý được chứng minh
Định lý 3.8 Cho n 2qr 1, ở đây q là số nguyên tố, r 4 q 2 Giả sử tồn tại a N, sao cho
) (mod 1 1
n
a n
, 2 1 (mod )
n
a r
Thế thì n hoặc là số nguyên tố, hoặcn p2, với p 2 q 1 - là số nguyên tố và
) (mod
a p
Chứng minh Giả sử n là hợp số, n pN , với p là số nguyên tố, N 1 Chúng ta chứng minh được rằng
) 2 (mod
N p
Nếu như một trong hai số p và N lớn hơn nhiều so với 1 2q, thì nó sẽ lớn hơn hoặc bằng 1 4q, và ( 1 2 )( 1 4 ) 8 2 6 1
1 4 8 1 ) 2
4
(
n Dẫn đến pN 1 2q,np2 Chứng minh phần còn lại
) (mod
a p
Rõ ràng theo điều kiện và n=p2 nên chúng ta có 2 1 1 (mod 2 )
p
a p
định lý Euler thì 2 1 (mod 2 )
p
a p p
, từ đây dẫn đến điều phải chứng minh
Chú ý: Nếu biết được q thì kiểm tra đẳng thức n ( 2q 1 ) 2 rất dễ dàng Có nghĩa là khi biết được a, chúng ta sẽ biết được n là nguyên tố hay hợp số Từ định lý kiểm tra tính nguyên tố này chúng có thể xây dựng số nguyên tố lớn rất hiệu quả, bởi vì càng lớn giới hạn trên của số ngẫu nhiên r thì càng đạt được việc xây dựng số nguyên tố như ý
Các định lý 1.25 – 1.29 độ lớn phân chia số n-1 có bậc n1 / 2 Định lý sau độ lớn phân chia số n-1 sẽ có bậc nhỏ hơn n1 / 3
Định lý 3.9 Giả sử n là số lẻ, n 1 ,n 1 F1R1, ở đây UCLN(F1,R1) 1, F1 là số chẳn, và ta biết được hoàn toàn sự phân chia F1 ra thừa số nguyên tố Giả sử đối với bất
kỳ ước nguyên tố q của F1 tìm thấy đượca qN , sao cho
) (mod 1
a n
q
, UCLN(a(n1 ) /q 1 ,n) 1
Trang 7Giả sử m N đối với từng l 1 , 2 , ,m 1, thì lF1 1không là ước của n nếu
) 1 ) ( 2 )(
1
1
ở đây R1 2F1L1L, 1 L 2F1, thì n là số nguyên tố khi và chỉ khi hoặc R 1 L, hoặc
1
2
8L
L không là số chính phương
3.5 Kiểm tra số nguyên tố bằng thuật toán Konigin-Pomerans
Nếu n N và biết được sự phân tích hoàn toàn hoặc một phần lớn ra thừa số nguyên tố của số n-1, thì có thể để kiểm tra xem n là hợp số hay là số nguyên tố với độ phức tạp theo đa thức Đánh giá tốt nhất độ phức tạp nhận được từ thuật toán Konigin-Pomerans:
Định lý 3.10 Giả sử nN, n 1, n là số lẻ,
k j
a j
j q n
1
1 Lúc này việc kiểm tra tính
nguyên tố của n có thể có chi phí là
n
n O
log log
log 17/7
Định lý 3.11 Giả sử nN, n 1, n là số lẻ, n 1 F1 R1, ở đây UCLN(F1,R1) 1, và biết được sự phân chia F1 ra thừa số nguyên tố Nếu
n n
F 4
1
1 , với là số dương không đổi, thì việc kiểm tra tính nguyên tố của n có thể chi phí là O((logn)c( ) )( c( ) là
số nguyên dương không đổi, phụ thuộc vào )
Bổ đề 3.1 Giả sử a,m N,a m 1 (modn)
, và giả sử đối với từng ước nguyên tố q của
m thỏa mãn ( / 1 , ) 1
n a
UCLN m q Khi đó nếu p là số nguyên tố và p | n, thì )
(mod
Chứng minh Rõ ràng rằng m là bậc của a (mod n)trongZ n Giả sử p là số nguyên tố,
và ước của n, và giả sử k là bậc của a (mod p) Như thế k=m Rõ ràng, k|m bởi vì từ
) (mod
a m
, dẫn đến a m 1 (modp)
Nếu như k<m, thì tìm được số nguyên tố q, q|m, sao cho k|(m/q) Từ đây ta có a m/q 1 (modp)
, có nghĩa là p|UCLN(a m/q 1 ,n)
Điều này trái với giả thuyết của bổ đề
Ngoài ra chúng ta còn có, theo định lý Fermat 1 1 (mod )
p
a p
, dẫn đến m|p-1 Đây
là điều ta cần chứng minh
Thuật toán kiểm tra tính nguyên tố của số.
Trang 8I Tầng 1 Chuẩn bị sẳn một bảng tất cả các số nguyên tố, không lớn hơn log 2 1
Đặt F(1):=1 Sau đó đối với từng số a=2,3,…, log 2n 1 chúng ta thực hiện tầng 2 cho đến khi chúng ta không chứng minh được n là hợp số hay nguyên tố
II Tầng 2.
1 Bước 1 Nếu a là hợp số, thì F(a) : F(a 1 )và nhảy lên bước 6 Nếu a là số nguyên tố, và a F(a 1 ) 1 (modn), thì F(a) : F(a 1 ) và nhảy đến bước 6 Ngược lại chúng ta kiểm tra điều kiện sau, xem có thỏa mãn không:
) (mod 1
a n
Nếu như không, thì n là hợp số
2 Bước 2 Khi phân tích n-1 ra thừa số nguyên tố, ta tìm bậc của a (mod n),
nghĩa là số tự nhiên nhỏ nhất E(a), thỏa mãn a E(a) 1 (modn)
3 Bước 3 Kiểm tra điều kiện sau có thỏa mãn hay không:
) (
|
/ ) ( 1 ) (
(
a E q
q a E
a UCLN , q là số nguyên tố
Nếu như điều kiện trên không hòan thành thì n là hợp số
4 Bước 4 F(a) : BCNN(F(a 1 ),E(a)), BCNN-bội số chung nhỏ nhất
5 Bước 5 Nếu như F(a) n, thì n là số nguyên tố
6 Bước 6 Nếu như alog 2n, thì quay về tầng 2 với a là giá trị tiếp theo Nếu như alog 2n 1, thì n là hợp số
Chúng ta chứng minh tính đúng đắn của thuật toán và nhận đánh giá về độ phức tạp của thuật toán
Bảng liệt kê số nguyên tố thực hiện trên tầng 1 nhờ sự giúp đỡ của sàng Eratosfen với độ phức tạp O(log 4n)
Giá trị hiện tại của F(a) là ước số của n-1, cho nên bước 1 của tầng mất O (log n) lệnh
Bước 2 của tầng tốn (log 3 )
n
O lệnh nhờ sự giúp đở của thuật toán hổ trợ sau
Thuật toán tìm bậc của phần tử
Cho đầu vào thuật toán a,nN ,
N j j
j p n
1
- tức là biết được sự phân tích ra thừa số nguyên tố của số n-1 Đầu ra là bậc của a (mod n) trong Z n
Bước 1 M n 1 ,j: 0
j A a p
M M j
Trang 9
Bước 3 (Chu trình) Đối với l 0 , 1 , , j, kiểm tra xem điều kiên sau có thỏa mãn không
) (mod
Nếu như đúng thì nhảy sang bước 4 Ngược lại
j Mp
A
A : ;
Và chuyển đến giá trị tiếp theo của l trong chu trình
Bước 4 Nếu như j<N, thì quay về bước 2, ngược lại thì đưa ra M.
Tính đúng đắn của thuật toán tìm bậc của phần tử thì quá rõ ràng Để nhận được đánh giá về độ phức tạp của thuật toán này ta chú y rằng
N j
N j
p n
1
2
từ đây NO(logn),p j O(logn), j O(logn) Cho nên bên trong và bên ngoài chu trình thực hiện O (log n) bước, và trong từng bước thực hiện O (log n)lệnh Tổng độ phức tạp là O(log 3n) lệnh
Trở lại thuật toán kiểm tra tính nguyên tố Nếu như UCLN trong bước 3 của tầng 2 không bằng 1, thì n là hợp số Rõ ràng rằng, theo định nghĩa E(a) không có một số nào từ
số ( ) / 1
q
a
E
a chia hết cho n Có nghĩa là gcd lớn hơn 1, một trong các số ( ) / 1
q a E
với n ước chung là d, 1<d<n Độ phức tạp của bước 3 tầng 2 là O(log 2n) lệnh
Sau khi trải qua bước 4, hòan thành điều kiện sau: Đối với tất cả các số b, 2 b a,
) (mod 1
)
b F a
Chúng ta chứng minh tính đúng đắn của bước 5 Chúng ta có
) (mod 1 ),
(mod ( )
1
)
, và đối với bất kỳ số nguyên tố q, a|E(a),
1 ) , 1 ( ( ) /
n a
Cũng như a F(a) 1 (modn)
Nếu như chúng ta chứng minh rằng, đối với mỗi số nguyên tố p, p|n, thỏa mãn điều kiện p 1 (modF(a)), thì p 1 F(a) 1 n, từ đây dẫn đến n là số nguyên tố Chúng ta chứng minh đồng dư thức p 1 (modF(a)) Giả sử rằng p 1 (modF(a 1 )) Theo bổ đề thì chúng ta có p 1 (modE(a)), từ đây
(mod 1
p BSCNN (F(a-1), (E(a))) 1 (modF(a)) Bây giờ chúng ta chứng minh bước 6 của tầng 2 Giả sử rằng n là số nguyên tố,
n F F a n
a log 2 , ( ) , chúng ta dẫn đến điều mâu thuẫn Theo cách xây dựng
1
|
)
(a n
F , bởi vì E(a) |n 1 Đặt
Trang 10
b 1, ,n 1 |b ( ) 1(modn)
1
H b| 1 bn, tất cả các ước nguyên tố b không lớn hơn a
Dễ dàng thấyH 1 H , dẫn đến |H 1| |H |
Từ n là số nguyên tố, dẫn đến |H | F
Theo định lý phân bố số nguyên tố, nếu n 5và2 a n thì ta có bất đẳng thức
a n
n a
n
log log 1
Từ đây
n n
n a n
n a
n
log log 2 log log 1 log log log 1
) , (
bởi vì a log 2n, dẫn đến log a 2 log logn Vậy chúng ta đã dẫn đến mâu thuẫn
3.6 Kiểm tra tính nguyên tố bằng thuật toán Millier
Cho f :N R*- hàm số trên tập số tự nhiên, với f(n)<n Tương tự Konhiagin-Pomerans chúng ta xem thuật toán Millier (Các bạn tự kiểm tra tính đúng đắn và tìm độ
phức tạp thuật toán)
Đầu vào là số tự nhiên lẻ n, n>1
Bước 1 Kiểm tra điều kiện sau có thỏa mãn hay khôngn m s, với s,mN,s 2 Nếu như thỏa mãn, thì n là hợp số, và thuật toán dừng
Bước 2 Thuật hiên các bước nhỏ (i)-(iii) đối với tất cả a f (n)
(i) Kiểm tra điều kiện a|n
(ii) Kiểm tra điều kiện a n 1 (modn)
(iii) Kiểm tra xem có đúng hay không, với một số giá trị của k, 1 kv2(n 1 ),
n n n a
UCLN k
n
) ), (mod 1 (
1
Nếu như một trong ba điều kiện (i)-(iii) thỏa mãn thì n là hợp số, và thuật toán dừng
Bước 3 Nếu như chúng ta đi đến được bước này thì n là số nguyên tố.
Chú ý Hàm v a (b)là số k lớn nhất thỏa mãn a k|b
3.7 Kiểm tra tính nguyên tố của số bằng phép kiểm tra 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ố Ta đưa ra một thuật toán, kết luận rằng n là số nguyên tố Nó 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