Loading

[笔记] 二次剩余

欧拉准则

对于奇素数 \(p\)\(p\nmid a\)

\[a^{\frac{p-1}{2}} \equiv\begin{cases} 1\pmod p,&x^2\equiv a\pmod p\text{ 有解}\\ -1\pmod p,&x^2\equiv a\pmod p\text{ 无解} \end{cases} \]

Cipolla 算法

  • 找到一个 \(a\) 满足 \(a^2-n\) 是非二次剩余。
  • \(i^2=a^2-n\),则 \((a+i)^{p+1}=n\),故两个解分别为 \((a+i)^{\frac{p+1}{2}}\) 和其相反数。
int n, mod, I_2;
struct Cpx{
	int x, y;
	inline Cpx operator * (Cpx z){
		return (Cpx){
		Mod((LL) x * z.x % mod + (LL) I_2 * y % mod * z.y % mod - mod),
		Mod((LL) x * z.y % mod + (LL) y * z.x % mod - mod)};
	}
};
void solve(){
	int a, res, x0, x1;
	do a = rand() % mod, res = Mod((LL)a * a % mod - n);
	while(!a || qpow(res, mod - 1 >> 1) == 1);
	I_2 = res;
	x0 = qpow({a, 1}, mod + 1 >> 1).x;
	x1 = mod - x0;
}
注意特判 \(a=0\)
posted @ 2022-04-15 09:45  IrisT  阅读(25)  评论(0编辑  收藏  举报