CHƢƠNG 2 CÁC THUẬT TOÁN KIỂM ĐỊNH SỐ NGUYÊN TỐ
2.2 Thuật toán kiểm định theo √
Thuật to n kiểm ịnh tính nguy n t một s nguy n dƣơng n d tr tiếp v o ịnh nghĩ v một v i tính hất ơ bản s nguy n t Cụ thể nhƣ s u [7]:
NT1 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ kh 1
nhỏ hơn nó
NT2 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ kh 1
nhỏ hơn ho b ng √ .
NT3 S t nhi n n l nguy n t khi v hỉ khi n kh ng ó ƣớ nguy n
t nhỏ hơn ho b ng √ .
NT4 S t nhi n n l nguy n t khi v hỉ khi n = 2 ho n lẻ v kh ng ó ƣớ nguy n t nhỏ hơn ho b ng √ .
Thuật to n ơ bản v biến thể nó u òi hỏi √ phép to n hi dƣ Thuật to n thƣờng ƣợ d ng khi kiểm ịnh s kh ng lớn ( ó khoảng t i 10 hữ s thập ph n)
Trong thuật to n, h m Even(n) ho gi trị true nếu n l s hẵn Từ khó step 2 ho biết bƣớ t ng biến duyệt l 2 s u mỗi lần
Algorithm Prime(n)
Ch n ng: Kiểm ịnh tính nguy n t c a s t nhi n n
Input: S t nhi n n > 1 Output: true nếu n nguy n t f lse: ngo i r Method
if n < 2 return false endif; if n = 2 return true endif; if Even(n) return false endif;
for d := 3 to ⌊√ ⌋ step 2 do if (n mod d) = 0 then return false endif endfor return true
Độ phức tạp tính toán
√ phép hi dƣ
Giả sử t ó p = (p1, …, pk) l d nh s h k > 1 s nguy n t ầu ti n
trong dãy s nguy n t D v o d nh s h n y t ó thể kiểm ịnh tính nguy n t s từ pk + 1 ến pk2 theo thuật to n Prime2 s u y
Algorithm Prime2(p, k, n) Ch n ng: Kiểm ịnh tính nguy n t c a s t nhi n n Input: p - d nh s h k > 1 s nguy n t ầu ti n S t nhi n n > 1
Output: true nếu n nguy n t f lse: ngo i r Method
for each e in p with e ⌊√ ⌋ do
if n mod e = 0 then return false endif endfor return true EndPrime2. Thí dụ
Giả sử t ã biết k = 7 s nguy n t ầu ti n p[1..7] = (2, 3, 5, 7, 11, 13, 17)
T ó thể kiểm tr tính nguy n t s từ p[7]+2 = 19 ến (p[7])2
1 = 2891 theo thuật to n Prime2 nhƣ s u Giả sử t họn s n = 103 ể kiểm tr
T ó ⌊√ ⌋ = 10, do ó hỉ ần kiểm tr xem 103 ó ƣớ nguy n t n o trong s 2, 3, 5, 7 h y kh ng T ó
103 mod 2 = 1 0 103 mod 3 = 1 0 103 mod 5 = 3 0 103 mod 7 = 5 0
Vậy 103 l s nguy n t
Độ phức tạp tính toán
√ phép hi dƣ.