要求解的東西是\[x^2\equiv n(mod\ p)\]
其中\(p\)是一個奇質數。ui
有二次剩餘的條件:
\[n^{\frac{p-1}{2}}\equiv 1(mod\ p)\]spa
第一種作法:
假設\(g\)是\(p\)的原根,那麼只須要求解\(g^a\equiv n(mod\ p)\),那麼解\(x=g^{\frac{a}{2}}\)。
這裏須要解決的問題就是爲何\(a\)必定會是一個偶數。
回到上面的式子,經保證存在解了,因此\((g^a)^{\frac{p-1}{2}}\equiv 1(mod\ p)\)。
而因爲費馬小\(g^{p-1}\equiv 1(mod\ p)\),因此能夠知道\(g^\frac{a}{2}\)確定是有意義的。
因此一個合法的解就是\(x=g^{\frac{a}{2}}\)。
而這個\(a\)的求解可使用\(BSGS\)在\(O(\sqrt n)\)的複雜度裏面求解。class
第二種作法
發現大概是一半的數存在二次剩餘,另一般不存在。咱們先隨便找一個\(a\),使得\(a^2-n\)不存在二次剩餘,這個隨便找的指望次數是\(2\)次。
令\(\omega=\sqrt{a^2-n}\),這個定義相似\(i\)的定義,這樣一來全部數均可以表示成\(a+b\omega\)的形式。
由於\(\omega^2\)這個東西不存在二次剩餘,因此\((\omega^2)^{\frac{p-1}{2}}=\omega^{p-1}\neq 1(mod\ p)\)。
可是\((\omega^2)^{p-1}\equiv 1(mod\ p)\),因此咱們知道了\(\omega^{p-1}\equiv -1(mod\ p)\)。
咱們要求的是\(n\),\(n=a^n-\omega^2=(a+\omega)(a-\omega)\)。
先考慮\(a-\omega\)這一項,根據費馬小有\(a^{p-1}\equiv 1(mod\ p)\),
根據前面推的東西有\(\omega^{p-1}\equiv -1(mod\ p)\)。
因此\(a-\omega\equiv a^p+\omega^p(mod\ p)\)。
而由於\(p\)是質數,因此在\(p\choose j\)中,只有\(j=0,p\)的時候\(p\choose j\)纔不是\(p\)的倍數。
因此能夠獲得在模意義下\((a+\omega)^p\equiv a-w(mod\ p)\)。
因而咱們就獲得了:\((a+\omega)^{p+1}\equiv n(mod\ p)\)。
由於要求的是\(n\)的二次剩餘,而\(p+1\)也剛好是偶數,因此咱們獲得了答案\((a+\omega)^{\frac{p+1}{2}}\)。
問題是這個東西里面極可能帶有\(\omega\)項,因此咱們就來證實其中不含有\(\omega\)。接下來默認把同餘給寫成\(=\)了。
假設\((a+\omega)^{\frac{p+1}{2}}=xa+y\omega\),因此\((xa+y\omega)^2=n\)。
拆開以後獲得\(x^2a^2+y^2(a^2-n)+2xay\omega=n\)。
因此\(x=0\)或者\(y=0\)。
假設\(x=0,y\neq 0\),那麼\(y^2(a^2-n)=n\),左邊的\(y^2\)顯然有二次剩餘\(y\),\(a^2-n\)沒有二次剩餘,因此其乘積也沒有二次剩餘,與\(n\)有二次剩餘矛盾。
因此\(y=0\)。
這樣子就作完啦。di