Số nguyên tố được xem là trung tâm của lý thuyết số trong Toán học. Việc kiểm định một số nguyên tố luôn là vấn đề nan giải đối với các nhà khoa học nhưng lại là một trong những vấn đề vô cùng hấp dẫn khiến cho việc tìm kiếm và phát minh ra các phương pháp mới để kiểm tra số nguyên tố ngày càng tối ưu và hiệu quả.
Ngày nay, với sự trợ giúp đắc lực của máy tính điện tử, người ta đã tìm ra được số nguyên tố lớn nhất (là số nguyên tố lớn nhất được tìm thấy cho đến hiện tại, có thể vẫn còn một số nguyên tố lớn hơn nhưng vẫn chưa được tìm thấy) có 23 triệu chữ số và có độ dài hơn 118 km nếu viết 2 chữ số trên 1cm, tính đến tháng 12 năm 2018. Việc tìm kiếm này đã được thực hiện trên một "siêu máy tính" dựa trên thuật toán Mersenne.
Trong bài viết này, mục tiêu của chúng ta là sẽ đi tìm hiểu các phương pháp kiểm tra số nguyên tố, từ đơn giản đến phức tạp, để xem các phương pháp này đã có bước phát triển như thế nào.
Nhắc lại kiến thức cơ bản
0 và 1
không được xem là số nguyên tố, cũng không được xem là hợp số, vì vậy khi thực hiện kiểm tra số nguyên tố, chúng ta sẽ loại bỏ 2 trường hợp này như là điều tất yếu.Phương pháp cổ điển (phương pháp chân phương)
số n
trong khoảng từ [2, n - 1]
.Từ phương pháp trên, chúng ta có thể tối ưu chúng một chút bằng cách giảm số vòng lặp với các phương pháp sau:
- Chỉ cần kiểm tra trong đoạn
[2, sqrt(n)]
. - Thực hiện việc chia lấy dư với các số nguyên tố được cài đặt sẵn (đã được xác nhận là chính xác).
Để có thể áp dụng được phương pháp thứ hai đòi hỏi máy tính cần có một bộ nhớ lớn để lưu trữ các số nguyên tố sẵn có. Việc này tuy nhanh vì có thể giảm được vòng lặp cho thuật toán xuống mức tối thiểu nhưng lại khá tốn bộ nhớ, chỉ thích hợp nếu bạn muốn tăng tốc độ thuật toán cho các giá trị lớn.
Dưới đây mình sẽ mô tả thuật toán cho hai phương pháp trên như sau:
Trường hợp 1: Chỉ áp dụng phương pháp đầu tiên.
Trường hợp 2: Áp dụng cả 2 phương pháp.
Ở đây có thể thực hiện thêm thao tác thêm giá trị nguyên tố mới vào mảng để kiểm tra những số nguyên tố lớn hơn.
Câu hỏi được đặt ra là tại sao chúng ta có thể đem n chia cho những số nguyên tố sẵn có nhỏ hơn mà không cần xét các trường hợp hợp số khác? Phương pháp này dựa trên kiến thức phổ thông đã được học, bất kì số tự nhiên lớn hơn 1 nào cũng đều có thể phân tích thành tích của các thừa số nguyên tố. Do đó chỉ việc đem
n
chia cho các giá trị nguyên tố sẵn có, nếu tồn tại một số nguyên tố nhỏ hơn n
mà n
chia hết thì số đó là hợp số.Trường hợp ngoài lề: Phương pháp 6k ± 1
6k ± 1
.
Không có bình luận nào!