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ố mũ công khai RSA hợp lệ (số nguyên tố Fermat)

    Bối cảnh

    Trong RSA, số mũ công khai eee thường được chọn là một số nguyên tố Fermat nhỏ — tức số có dạng 22k+12^{2^k}+122k+1 — vì khi đó e−1e-1e−1 là một lũy thừa của 222, giúp phép lũy thừa modulo (mã hóa) chỉ cần các bước bình phương liên tiếp (thuật toán square-and-multiply rất hiệu quả). Các giá trị eee phổ biến trong thực tế là 3,5,17,257,655373, 5, 17, 257, 655373,5,17,257,65537 — tất cả đều là số nguyên tố Fermat đã biết.

    Đề bài

    Cho một số nguyên eee. Hãy phân loại:

    1. Nếu eee không phải số nguyên tố: in ra NOT_PRIME.
    2. Nếu eee là số nguyên tố và e−1e - 1e−1 là một lũy thừa của 222 (tức e−1=2te-1 = 2^te−1=2t với t≥0t \ge 0t≥0 nguyên nào đó — bao gồm cả e−1=1=20e-1=1=2^0e−1=1=20): in ra VALID_RSA_EXPONENT.
    3. Nếu eee là số nguyên tố nhưng e−1e-1e−1 không phải lũy thừa của 222: in ra PRIME_NOT_FERMAT.

    Ràng buộc

    • 2≤e≤1072 \le e \le 10^72≤e≤107.

    Ví dụ

    Input:

    17
    

    Output:

    VALID_RSA_EXPONENT
    

    Giải thích: 171717 là số nguyên tố và 17−1=16=2417 - 1 = 16 = 2^417−1=16=24, nên 171717 là một số mũ công khai RSA hợp lệ theo tiêu chí trên.

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

      Một dòng duy nhất chứa số nguyên eee (2≤e≤1072 \le e \le 10^72≤e≤107).

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

      Một dòng: NOT_PRIME, hoặc PRIME_NOT_FERMAT, hoặc VALID_RSA_EXPONENT.

    Ví dụ:

    Đầu vào:

    7

    Đầu ra:

    PRIME_NOT_FERMAT
    

    Đầu vào:

    2

    Đầu ra:

    VALID_RSA_EXPONENT
    

    Đang tải editor...