模板 二次剩餘

2022-05-07 21:27:10 字數 867 閱讀 9682

又被二次剩餘調教了。

以下,p是奇質數。

如果存在乙個x,使得 \(x^2=n\; mod \; p\) ,則n是p的乙個二次剩餘。

勒讓德符號: \((\frac)\)

當n是p的二次剩餘, \((\frac)=1\) ;

當n不是p的二次剩餘, \((\frac)=-1\) ;

當p|n, \((\frac)=0\) 。

結論: \((\frac)=n^}\) 。

定理:定理:對於方程 \(x^2≡n\; mod \; p\) ,有 \(\frac\)​ 個不同的 n ,使得該方程有解。

所以在[0,p-1]中隨機選乙個數a,定義w=a^2-n,若 \((\frac)=-1\), 那麼 \((a+\sqrt)^}\) 就是一組二次剩餘。

所以這個演算法的期望複雜度只有2次。

假如n是p的二次剩餘,那麼n可以在模p意義下開根。

模板**:

p是任意的奇質數。

const int p = 1e9 + 7;

struct hh ;

hh(ll _x, ll _y)

};ll w;

hh mul(hh a, hh b, ll p)

hh quick1(hh a, ll b, ll p)

return ans;

}ll quick2(ll a, ll b, ll p)

return ans;

}ll solve(ll a, ll p)

hh ans = hh(b, 1);

ans = quick1(ans, (p + 1) / 2, p);

return ans.x;

}

模板 二次剩餘

求解方程 x 2 a space mod space p 其中p是質數,無解返回 1,有解則返回兩個解之中較小的那乙個。事實上假如p是奇質數的話,兩個解相等僅當x 0的時候,完全可以特判掉。includeusing namespace std typedef long long ll ll p,w ...

二次剩餘小結

對於模數 n 和整數 a 若存在整數 x 滿足 x 2 equiv a mod n 則稱 x 是模 n 意義下的二次剩餘,否則是非二次剩餘 注 這裡討論的 x 滿足 x in 1,n 尤拉判別法 對於奇素數 p a 是模 p 意義下的二次剩餘當且僅當 a equiv 1 mod p 類似的,若 a ...

二次剩餘小記

看 text 的部落格看到的,發現似乎並沒有想象中的那麼難,就學了一下,過了板題,這裡記錄一下,暫時還是只會二次剩餘,n 次剩餘暫時先放一下。下文的 p 即是模數。我們稱 n 為模 p 意義下的二次剩餘當且僅當存在 x 使得 x 2 equiv n pmod p,x in mathbb 下文的 ma...