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] Số Carmichael

    Định lý Fermat nhỏ khẳng định nếu ppp là số nguyên tố thì ap−1≡1(modp)a^{p-1} \equiv 1 \pmod pap−1≡1(modp) với mọi aaa nguyên tố cùng nhau với ppp. Điều này thường được dùng làm phép thử nhanh (Fermat primality test) để loại bỏ hợp số. Tuy nhiên tồn tại các hợp số nnn vẫn thỏa mãn an−1≡1(modn)a^{n-1} \equiv 1 \pmod nan−1≡1(modn) với mọi aaa nguyên tố cùng nhau với nnn — gọi là số Carmichael — khiến phép thử Fermat bị đánh lừa.

    Theo tiêu chuẩn Korselt, hợp số nnn là số Carmichael khi và chỉ khi:

    1. nnn không chia hết cho bình phương của bất kỳ số nguyên tố nào (squarefree);
    2. với mọi ước nguyên tố ppp của nnn, ta có (p−1)∣(n−1)(p - 1) \mid (n - 1)(p−1)∣(n−1).

    Cho số nguyên nnn, hãy xác định nnn có phải là số Carmichael hay không.

    Ví dụ: n=561=3×11×17n = 561 = 3 \times 11 \times 17n=561=3×11×17. Ta có 560560560 chia hết cho 2,10,162, 10, 162,10,16, nên 561561561 là số Carmichael (đây chính là số Carmichael nhỏ nhất).

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

      Một dòng duy nhất chứa số nguyên nnn (2≤n≤10122 \le n \le 10^{12}2≤n≤1012).

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

      In ra YES nếu nnn là số Carmichael, ngược lại in NO.

    Ví dụ:

    Đầu vào:

    1105

    Đầu ra:

    YES
    

    Đầu vào:

    561

    Đầu ra:

    YES
    

    Đang tải editor...