Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Kiểm tra nguyên tố Miller-Rabin

    Kiểm tra nguyên tố Miller-Rabin (nhân chứng cố định)

    Với số lớn, thử chia quá chậm. Miller-Rabin là phép kiểm tra nhanh dựa trên định lý Fermat mở rộng.

    Viết n - 1 = 2^r * d với d lẻ. Với nhân chứng a, n có thể là nguyên tố nếu a^d ≡ 1 (mod n) hoặc tồn tại 0 <= i < r sao cho a^(2^i * d) ≡ -1 (mod n).

    Dùng bộ nhân chứng cố định {2,3,5,7,11,13,17,19,23,29,31,37} thì kết quả xác định đúng cho mọi n < 3.3 * 10^24.

    Ví dụ

    Input:
    561
    Output:
    NO
    

    561 = 3 x 11 x 17 là số Carmichael, không phải nguyên tố.

    • Định dạng đầu vào:

      Một dòng chứa số nguyên n.

    • Ràng buộc đầu vào:

      0 <= n <= 10^18

    • Định dạng đầu ra:

      In YES nếu n là số nguyên tố, ngược lại in NO.

    Ví dụ:

    Đầu vào:

    561
    

    Đầu ra:

    NO

    Giải thích:

    561 = 3 x 11 x 17 là hợp số (số Carmichael) nên in NO.

    Đang tải editor...