1. 程式人生 > >二次剩余

二次剩余

需要 spl 要求 發現 isp 這一 解決 使用 一個

二次剩余

求啥?

要求解的東西是\[x^2\equiv n(mod\ p)\]
其中\(p\)是一個奇質數。

前置條件

有二次剩余的條件:
\[n^{\frac{p-1}{2}}\equiv 1(mod\ p)\]

  • 證明:
    根據費馬小定理,有\(n^{p-1}\equiv 1(mod\ p)\)
    假設存在解\(x\),那麽有\(a^{p-1}\equiv 1(mod\ p)\),還有\(a^2\equiv n(mod\ p)\)
    那麽有:
    \[a^{p-1}=(a^2)^{\frac{p-1}{2}}=n^{\frac{p-1}{2}}\equiv 1(mod\ p)\]

怎麽做呢?

  • 第一種做法:

    假設\(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)\)
    的復雜度裏面求解。

  • 第二種做法
    發現大概是一半的數存在二次剩余,另外一般不存在。我們先隨便找一個\(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\)
    這樣子就做完啦。

二次剩余