Trong trao đổi khóa Diffie-Hellman, tính an toàn phụ thuộc vào cấp (order) của phần tử sinh a trong nhóm nhân Zp∗ (p nguyên tố): đó là số nguyên dương nhỏ nhất k sao cho
ak≡1(modp).
Cấp của a luôn là ước của p−1 (định lý Lagrange / hệ quả của định lý Fermat nhỏ). Nếu cấp của a đúng bằng p−1 thì a là một căn nguyên thủy (primitive root) modulo p, thường dùng làm phần tử sinh công khai g trong Diffie-Hellman/ElGamal.
Cho số nguyên tố p và số nguyên a với 1≤a≤p−1. Hãy tính cấp của a trong Zp∗, tức số nguyên dương nhỏ nhất k sao cho ak≡1(modp).
Input:
7 3
Output:
6
Giải thích: 31=3, 32=2, 33=6, 34=4, 35=5, 36=1(mod7). Vậy cấp của 3 modulo 7 là 6 (và 3 là một căn nguyên thủy modulo 7).
Một dòng chứa hai số nguyên p và a, cách nhau bởi dấu cách.
Một dòng duy nhất: cấp (bậc nhân) của a modulo p.
Ví dụ:
Đầu vào:
7 3
Đầu ra:
6
Đầu vào:
13 4
Đầu ra:
6
Đang tải editor...