若有方程:
x2≡a(modp)
这个方程的解已经可以在优秀的时间内求解,不过这里只探讨 p 为奇质数的情况。
O(n√)
解法
首先有欧拉准则: x2≡a(modp) 有解 ⇔ ap−12≡1(modp)
证明:
1.充分性。
ap−12=(x2)p−12=xp−1
由费马小定理, xp−1≡1(modp)
2.必要性。
设 g 为模p 意义下的原根, gi≡a(modp) 。
有gi(p−1)2≡1(modp)
g 为原根,那么(p−1)|(i(p−1)2)
此时 i 为偶数,令x=gi2 可以构造出一组解。
显然 BSGS 可以构造出一组解,问题可以在 O(n√) 内解决,不过还有更加优美的解法。
O(log2n) 解法
若 x2≡w(modp) 无解,则称 w 为