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ố nguyên tố Sophie Germain và số nguyên tố an toàn

    Bối cảnh

    Trong sinh khóa cho các giao thức mật mã (Diffie-Hellman, DSA, một số biến thể RSA), người ta thường cần một số nguyên tố an toàn (safe prime) P=2q+1P = 2q+1P=2q+1, trong đó qqq cũng là số nguyên tố. Khi đó qqq được gọi là số nguyên tố Sophie Germain. Tính chất này quan trọng vì nhóm nhân ZP∗\mathbb{Z}_P^*ZP∗​ có cấp P−1=2qP-1 = 2qP−1=2q chỉ có ước nguyên tố là 222 và qqq, giúp tránh các tấn công kiểu Pohlig-Hellman lên bài toán logarit rời rạc.

    Đề bài

    Cho một số nguyên qqq. Hãy xác định:

    1. Nếu qqq không phải số nguyên tố: in ra NOT_PRIME.
    2. Nếu qqq là số nguyên tố và 2q+12q+12q+1 cũng là số nguyên tố (tức qqq là số Sophie Germain, 2q+12q+12q+1 là số nguyên tố an toàn): in ra SOPHIE_GERMAIN và giá trị 2q+12q+12q+1 (cách nhau một dấu cách).
    3. Nếu qqq là số nguyên tố nhưng 2q+12q+12q+1 không phải số nguyên tố: in ra PRIME_ONLY.

    Ràng buộc

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

    Ví dụ

    Input:

    11
    

    Output:

    SOPHIE_GERMAIN 23
    

    Giải thích: 111111 là số nguyên tố, 2×11+1=232 \times 11 + 1 = 232×11+1=23 cũng là số nguyên tố, nên 111111 là số Sophie Germain và 232323 là số nguyên tố an toàn tương ứng.

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

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

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

      Một dòng: NOT_PRIME, hoặc PRIME_ONLY, hoặc SOPHIE_GERMAIN <2q+1> tùy trường hợp (như mô tả ở đề bài).

    Ví dụ:

    Đầu vào:

    2

    Đầu ra:

    SOPHIE_GERMAIN 5
    

    Đầu vào:

    4

    Đầu ra:

    NOT_PRIME
    

    Đang tải editor...