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+1, trong đó q cũng là số nguyên tố. Khi đó q đượ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∗ có cấp P−1=2q chỉ có ước nguyên tố là 2 và q, 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.
Cho một số nguyên q. Hãy xác định:
NOT_PRIME.SOPHIE_GERMAIN và giá trị 2q+1 (cách nhau một dấu cách).PRIME_ONLY.Input:
11
Output:
SOPHIE_GERMAIN 23
Giải thích: 11 là số nguyên tố, 2×11+1=23 cũng là số nguyên tố, nên 11 là số Sophie Germain và 23 là số nguyên tố an toàn tương ứng.
Một dòng duy nhất chứa số nguyên q (2≤q≤107).
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...