Thuật toán Miller-Rabin là một phương pháp kiểm tra tính nguyên tố nhanh, dựa trên lý thuyết số và được sử dụng để xác định liệu một số lớn có phải là số nguyên tố hay không. Đây là một thuật toán xác suất, có nghĩa là nó có thể cho kết quả sai (các số giả nguyên tố), nhưng xác suất sai số là rất nhỏ nếu số lần kiểm tra tăng lên. Thuật toán này đặc biệt hữu ích khi làm việc với các số rất lớn, thường được sử dụng trong mật mã học và các ứng dụng liên quan đến bảo mật.
Thuật toán Miller-Rabin dựa trên nguyên lý của định lý Fermat nhỏ:
Nếu là số nguyên tố, thì ta có . (Bạn có thể xem lại chứng minh của định lý này tại bài viết về thuật toán AKS.
Tuy nhiên, vấn đề là đối với một số tự nhiên bất kỳ thỏa mãn với cũng là số tự nhiên, thì chưa chắc đã là số nguyên tố. Nói cách khác, nếu vượt qua phép thử Fermat trên, vẫn tồn tại một khả năng nhỏ là hợp số. Từ đây, thuật toán Miller-Rabin mở rộng phép thử Fermat từ nhận xét:
Với mọi , luôn có thể phân tích , với là một số lẻ
Từ đó ta phân tích thành: . Nếu là số nguyên tố thì phải tồn tại ít nhất một thừa số chia hết cho .
Như vậy ta sẽ kiểm trả các điều kiện:
Hoặc
Hoặc có ít nhất một thừa số chia hết cho , hay
Nếu không thỏa cả 2 điều kiện trên thì chắc chắn là hợp số, ngược lại thì có khoảng khả năng là một số nguyên tố. Như vậy, để chắc chắn hơn, ta có thể kiểm tra nhiều lần với nhiều giá trị khác nhau để tăng xác suất.
Kiểm tra có phải số nguyên tố hay không, lưu ý rằng thuật toán dưới đây nếu trả về TRUE thì có thể là số nguyên tố, ngược lại nếu FALSE thì chắc chắc là hợp số.
Phân tích
Chọn số ngẫu nhiên :
Nếu : return TRUE
Cho
Nếu : return TRUE
Return FALSE
No comments yet. Be the first to comment!