Thuật toán đa thức kiểm tra tính nguyên tố

Một phần của tài liệu luận văn lịch sử phát triển số nguyên tố (Trang 26 - 28)

Tháng 8 năm 2002, ba tác giả Manindra Agrawal, Meeraj Kayal và Nitin Saxena (Viện công nghệ Kanpur-Ấn độ) công bố thuật toán kiểm tra tính nguyên tố với độ phức tạp đa thức (thường được gọi là thuật toán AKS) Tuy nhiên, với bậc đa thức khá cao(khoảng O(log12n)) , thuật toán chưa chứng tỏ được tính hiệu quả rõ rệt trong tính toán thực tiễn(cho đến nay). Về mặt lý thuyết thuật toán có ý nghĩa lớn vì vấn đề này thu hút sự quan tâm nghiên cứu của nhiều người trong một thời gian dài. Thuật toán AKS sử dụng các kiến thức khá sơ cấp với ý tưởng khá mạnh lạc, rõ ràng. Thuật toán xuất phát từ ý tưởng như sau đây:

Số nguyên p là số nguyên tố khi và chỉ khi đẳng thức sau đúng với một số nguyên a nào đó nguyên tố cùng nhau với p:

(x−a)p ≡ xp−a (mod p)

Nhưng việc kiểm tra đẳng thức trên không phải đơn giản (khi p đủ lớn), cho nên người ta cho rút gọn hai vế của đẳng thức trên theo modulo đa thức xr − 1 (với r là một số nguyên tố có tính chất "đặc biệt" sẽ được mô tả trong thuật toán) và sau đó lại rút gọn các hệ số của kết quả thu được (hai đa thức) theo modulo p. Tức là có hệ thức sau:

(x−a)p ≡ xp−a (mod xr−1, p)

Biểu thức này có thể xảy ra trong một số trường hợp plà hợp số, nhưng người ta đã chứng minh được rằng không có hợp số p nào thỏa mãn với mọi a nằm trong vùng :1< a < 2√

r.logp

Như vậy việc kiểm tra biểu thức trên cho các số a nằm trong vùng này sẽ tương đương với việc kiểm tra tính nguyên tố của p và có độ

phức tạp là đa thức.

THUẬT TOÁN

In put n > 0

Bước 1: Nếu n có dạng ab với b > 1 thì kết thúc và thông báo " hợp

số", nếu không thì cho r := 2

Bước 2: Kiểm tra r < n, nếu đúng thực hiện tiếp bước 3

Bước 3: Kiểm tra gcd(n,r) nếu khác 1 thì kết thúc và cho in ra "hợp

số", nếu là 1 thì ta kiểm tra tính nguyên tố của r, khi r là nguyên tố ta thực hiện tiếp bước 4, nếu không ta tăng r lên 1 đơn vị rồi quay trở lại bước 2.

Bước 4: Gọi q là ước nguyên tố lớn nhất của r − 1 , tiến hành kiểm

tra nếu q ≥ 4√

r.logn và nr−21 ≡ 1 (mod r) thì thực hiện tiếp bước 5. Ngược lại ta tăng r lên 1 đơn vị rồi quay trở lại bước 2.

Bước 5: Kiểm tra a ≤ 2√

r.logn, nếu đúng ta thực hiện bước 6, nếu sai ta kết thúc và cho in ra "nguyên tố"

Bước 6: Nếu (x− a)n 6≡ xn −a (mod xr −1, n), ta kết thúc và in ra

"hợp số", ngược lại ta tăng a lên 1 đơn vị rồi quay trở lại bước 5.

Người ta chứng minh được rằng những số nguyên tố r cần cho thuật toán (thỏa mãn điều kiện bước 4) là tồn tại, và có cỡ (O(log6n)), do đó thuật toán là hữu hạn. Dễ dàng kiểm tra rằng nếu n là nguyên tố thì thuật toán có câu trả lời là "nguyên tố", còn việc chứng minh rằng khi n là hợp số, thuật toán phải cho câu trả lời là "hợp số" thì khá dài (nhưng không khó).

Chương 2

Một số ứng dụng của số nguyên tố trong xã hội hiện đại

Một phần của tài liệu luận văn lịch sử phát triển số nguyên tố (Trang 26 - 28)