1. 程式人生 > >二次剩余 Cipolla算法

二次剩余 Cipolla算法

sqrt inline ipo spa pmo line 復數 pan 歐拉

歐拉準則

\(a\)\(p\)的二次剩余等價於\(a^{\frac{p-1}{2}}\equiv 1\pmod p\)\(a\)不是\(p\)的二次剩余等價於\(a^{\frac{p-1}{2}}\equiv -1\pmod p\)

Cipolla

\(a^2-n\)不是\(p\)的二次剩余,則\(p\)的二次剩余為\((a+\sqrt{a^2-n})^\frac{p+1}{2}\)

因此我們隨機\(a\)即可。\(\sqrt{a^2-n}\)的計算用復數。

時間復雜度約為\(O(\log^2p)\)

二次剩余 Cipolla算法