關於原根


時隔兩三個月重新打$ntt$的時候,已經忘記了常見模數的原根。

想要回憶原根的求法,以備不時之需,然而也忘記了。

所以頹了大神$yxs$的證明博客,為了防止再次遺忘,來復讀一遍大神的做法和證明。

 

做法:

因為原根往往很小,所以可以采用暴力枚舉的方法。

然而直接暴力$check$的復雜度並不是合法的。

一個可行的$check$方法:

對$\varphi(p)$質因數分解,得到$y_i=\frac{\varphi(p)}{p_i}$

設當前$check$的數為$x$

對每個$y_i$,快速冪求出$x^{y_i}$,若均不為$1$,那么$x$為$p$的一個原根。

 

證明:

若$x^i \equiv 1$ $(mod\ p)$,有$x^{i*k} \equiv 1$ $(mod\ p)$。

若存在$x^k \equiv 1$ $(mod\ p)$ $(0<k<\varphi(p))$,$x$一定不為原根,所以該做法具有必要性。

下面通過反證證明充分性。

設存在$x^k \equiv 1$ $(mod\ p)$ 其中$k$不被任意$y_i$整除。

一定存在一組$u,v$滿足$u*k+v*\varphi(p)=gcd(k,\varphi(p))$。

有$u*k=gcd(k,\varphi(p))-v*\varphi(p)$。

因為$x^{u*k} \equiv 1$ $(mod\ p)$,

有$x^{gcd(k,\varphi(p))-v*\varphi(p)} \equiv 1$ $(mod\ p)$

因為$x^{v*\varphi(p)} \equiv 1$ $(mod\ p)$,

有$x^{gcd(k,\varphi(p))} \equiv 1$ $(mod\ p)$

顯然存在$y_i$為$gcd(k,\varphi(p))$的倍數,所以不存在這樣的$k$。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM