6 原根

Posted philolif

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6 原根相关的知识,希望对你有一定的参考价值。

6 原根

6.1 整数的阶

定义6-1:((a,m)=1,m>0),那么使得(a^lequiv1(mod;m))成立的最小正整数(l)称为(a)(m)的阶,记为(ord_m(a)),或者简记为(ord(a))

如果((a,m)=1),那么(a)(m)的阶总是存在的。因为根据欧拉定理,至少有正整数(varphi(m))满足(a^{varphi(m)}equiv1(mod;m))

例子: 模10元素的阶

(a) 1 3 7 9
(ord(a)) 1 4 4 2

定理6-1((a,m)=1),对于任意的正整数(d)满足(a^dequiv1(mod;m)),则有(ord(a)|d)

证明:

通过带余除法将(d)表示为(d=ord(a)q+r,0le rlt ord(a)),我们的目标就是证明(r=0)
[ egin{aligned} 1equiv a^d &equiv a^{ord(a)q+r}&equiv (a^{ord(a)})^qcdot a^r&equiv a^rmod m end{aligned} ]
如果(r e0),说明我们找到了比(ord(a))更小的正整数,使得(a^requiv1(mod;m))成立。这显然与整数阶的定义相矛盾,于是(r=0),即(ord(a)|d)

根据欧拉定理,我们有(a^{varphi(m)}equiv1(mod;m))。根据定理6-1我们便可以得出结论:(ord(a)|varphi(m)),也就是说整数的阶一定是欧拉函数的因子

定理6-2((a,m)=1,m>0,r=ord_m(a)),那么有以下结论成立:

  1. (s,t)是正整数,则(a^sequiv a^t(mod;m))当且仅当(sequiv t(mod;r))
  2. 整数(a,a^2,cdots,a^r)中任意两个数都模(m)互不同余。
  3. (n)是正整数,则(a^n)的阶为(r/(r,n))

证明:

不妨假设(sge t),于是我们有
[ egin{aligned} a^sequiv a^t(mod;m)&Leftrightarrow m|a^t(a^{s-t}-1)\end{aligned} ]
由于(a,m)互素,因此我们还可以得到
[ m|(a^{s-t}-1)Leftrightarrow a^{s-t}equiv1(mod;m) ]
根据定理6-1可知(r|(s-t)),所以(sequiv t(mod;r))

((a,m)=1)的前提下,上述推导都是等价的,因此结论1成立。

根据结论1,可以很容易得到结论2成立。

接着证明结论3,假设(a^n)的阶为(d),那么
[ (a^n)^dequiv a^{nd}equiv1mod m ]
根据定理6-1,我们得到(r|nd),所以
[ r|ndRightarrow frac{r}{(r,n)}|frac{n}{(r,n)}d Rightarrow frac{r}{(r,n)}|d ]
这是因为(r/(r,n))(n/(r,n))互素。

又因为
[ (a^n)^{frac{r}{(r,n)}}equiv(a^r)^{frac{n}{(r,n)}}equiv1mod m ]
所以(d|frac{r}{(r,n)}),因此(d=r/(r,n)),即结论3成立。

结论3的一个简单推论: 假设(a)的阶可以被表示为(r=r_1r_2),那么(a^{r_1})的阶为(r_2)
[ ord(a^{r_1})=frac{r}{(r,r_1)}=frac{r_1r_2}{(r_1,r_1)}=frac{r_1r_2}{r_1}=r_2 ]
从最小公倍数的角度理解结论3: 求得(a^n)的阶,相当于找到一个最小的正整数(d),使得(a^{nd}equiv1(mod;m)),这也相当于是找到整数(n)的一个最小倍数(nd)使得同余式成立。根据定理6-1,(nd)又一定得是(r)的倍数,于是,(nd)就只能是(n,r)的最小公倍数,根据最小公倍数的公式,我们可以得到
[ nd=frac{rn}{(r,n)}Rightarrow d=frac{r}{(r,n)} ]

定理6-3((a,m)=1,(b,m)=1,ord(a)=d_1,ord(b)=d_2)((d_1,d_2)=1),那么(ab)(m)的阶为
[ ord(ab)=d_1d_2 ]
证明:

假设(d=ord(ab)),那么
[ egin{aligned} 1equiv(ab)^{dd_1}&equiv(a^{d_1})^dcdot(b^{dd_1}) equiv b^{dd_1}mod{m} end{aligned} ]
因此(d_2|dd_1),根据(d_1,d_2)互素,可以得到(d_2|d);同理可得(d_1|d)

所以(d_1d_2|d),即(d)(d_1d_2)的倍数,根据阶的最小性,可知(d=d_1d_2)

6.2 整数的原根

定义6-2 如果((a,m)=1,ord_m(a)=varphi(m)),那么称(a)为模(m)的原根,简称为(m)的原根。

例子: 7的原根:3,5

定理6-4(p)为奇素数,(g)(p)的一个原根,那么(g^s)(p)的阶为((p-1)/(s,p-1))。当且仅当((s,p-1)=1)时,(g^s)为模(p)的一个原根。

证明:

因为(p)是奇素数,所以(varphi(p)=p-1)

因为(g)(p)的一个原根,所以(g)(p)的阶为(varphi(p)=p-1)

于是根据定理6-2中的结论3,立马就可以得到(g^s)的阶为((p-1)/(s,p-1))

如果((s,p-1)=1),那么我们立马可以知道(g^s)就是(p)的一个原根。反过来,如果(g^s)(p)的一个原根,那么也必然有((s,p-1)=1)

原根的个数:

如何寻找一个整数(m)的原根?从模(m)的简化剩余系中找,对于简化剩余系中的每一个数进行测试,寻找其中阶是(varphi(m))的整数。

假设模(m)存在一个原根(a),此时构造集合(A={a,a^2,cdots,a^{varphi(m)}})。根据定理6-2的结论2,我们知道集合(A)中的(varphi(m))个元素两两模(m)不同余。又因为((a,m)=1),所以((a^s,m)=1(1le slevarphi(m))),即集合(A)中的元素均与(m)互素,所以集合(A)就是模(m)的一个简化剩余系。

因此,我们只需知道一个原根(a),就可以通过幂运算得到一个简化剩余系。利用定理6-2中的结论3,我们知道(a^s)的阶为(varphi(m)/(s,varphi(m)))。于是,(a^s)是原根当且仅当((s,varphi(m))=1)

又因为(1le slevarphi(m)),因此使得((s,varphi(m))=1)成立的整数(s)的个数(即原根的个数)就等于闭区间([1,varphi(m)])内与(varphi(m))互素的整数的个数。这显然就是欧拉函数的定义。

综合可知,如果整数(m)有原根,那么原根的个数为:(varphi(varphi(m)))

6.3 原根的存在性

定理6-5 素数(p)一定存在原根。

证明:

(p=2)的时候,其原根就是1,因此我们只需要考虑(p)是奇素数的情况。

(p)简化剩余系(A={1,2,cdots,p-1})每个元素对应的阶为:(ord(1),ord(2),cdots,ord(p-1)),我们令
[ d=[ord(1),ord(2),cdots,ord(p-1)] ]
由阶的性质与欧拉定理,我们可以得到(forall ain A,ord(a)|varphi(p))

根据最小公倍数的性质,可以得到(d|varphi(p)),即(dle p-1)

因为对于任意的整数(ain A),都有(a^dequiv1(mod;p)),即同余方程(x^dequiv1(mod;p))至少有(p-1)个根。结合定理3-5可知,(dge p-1)。因此(d=p-1)

利用算数基本定理,令(d=p_1^{alpha_1}p_2^{alpha_2}cdots p_k^{alpha_k}),其中(p_i(1le ile k))都是素数。

利用最小公倍数的(定理1-11)求法,可以知道对于任意一个(p_i^{alpha_i})必然来自于某一个(ord(a_i)(a_iin A)),这意味着
[ forall 1le ile k,;exists a_iin A,p_i^{alpha_i}|ord(a_i)Rightarrow exists b_iinmathbb{N}^*,a_iin A,ord(a_i)=b_ip_i^{alpha_i} ]
利用定理6-2结论3的推论,可以得到(ord(a^{b_i})=p_i^{alpha_i})

由于(p_1^{alpha_1},p_2^{alpha_2},cdots,p_k^{alpha_k})两两互素,根据定理6-3我们可以得到:(ord(a_1^{b_1}a_2^{b_2}cdots a_k^{b_k})=p_1^{alpha_1}p_2^{alpha_2}cdots p_k^{alpha_k}=d)

于是我们找到了模(p)的一个原根:(a_1^{b_1}a_2^{b_2}cdots a_k^{b_k})

综上可知,模素数的原根一定存在。

定理6-6 整数(m)有原根的充要条件是:(m)属于下列几种情况之一:
[ m=2,4,2p^l,p^{l};(lge1) ]
其中(p)是奇素数。

2的原根是1,4的原根是3。

(p)的原根为(g)(p^l(lge2))的原根为(g_1)(2p^l)的原根为(g_2),那么

(g^{p-1} otequiv1(mod;p^2))时,(g_1=g);否则,(g_1=g+p)

(g_1)是奇数时,(g_2=g_1);否则(g_2=g_1+p^l)

证明如下:

(m=prod{p_i^{alpha_i}}),则(varphi(m)=prod{varphi(p_i^{alpha_i})})

(d=[varphi(p_1^{alpha_1}),varphi(p_2^{alpha_2}),cdots,varphi(p_k^{alpha_k})]),那么根据最小公倍数的性质有(dlevarphi(m)),并且(varphi(p_i^{alpha_i})|d)

如果一个整数(a),满足((a,m)=1),说明(a)(m)没有大于1的公共素因子,因此((a,p_i^{alpha_i})=1)
[ egin{aligned} a^dequiv1mod p_i^{alpha_i}& Rightarrow p_i^{alpha_i}|(a^d-1)&Rightarrow p_1^{alpha_1}p_2^{alpha_2}cdots p_k^{alpha_k}|(a^d-1)&Rightarrow m|(a^d-1)&Rightarrow a^dequiv1mod m end{aligned} ]
如果(m)存在一个原根,为了使得(a^dequiv1(mod;m))仍然能够成立,必须要求(varphi(m)|d),即(dgevarphi(m))

因此(d=varphi(m)),这意味着(varphi(p_i^{alpha_i}))两两互素。

又因为在(p_i)是奇数的情况下,一定有(varphi(p_i^{alpha_i})=p_i^{alpha_i}-p_i^{alpha_i-1})为偶数,所以(m)一定不能同时有两个或两个以上的奇素数因子,否则它们将会有公因子2。因此,整数(m)一定可以被表示成(m=2^{alpha}p^eta)的形式。

为了保证(varphi(2^alpha))(varphi(p^eta))互素,整数(m)可以被进一步划分为以下三种情况:
[ m=2^alpha,p^eta,2p^eta ]
其中(p)是奇素数,以下将分别对这三种情况进行讨论。

6.3.1 情况1 (m=p^eta,etage1)

已知(p)的原根,求(p^2)的原根:

根据定理6-5,奇素数一定具有原根,这里假设(p)的原根为(g)

我们的目标就是通过(g)求得(p^2)的一个原根,假设(g)在模(p^2)下的阶为(d),那么(d|varphi(p^2))(d|p(p-1)),并且
[ g^dequiv1(mod;p^2)Rightarrow g^dequiv1(mod;p)Rightarrow (p-1)|d ]
所以((p-1)|d|p(p-1))。因此(g)在模(p^2)下的阶要么是(p-1),要么是(p(p-1))。如果(d=p(p-1))显然(g)就是(p^2)的原根。

对于(d=p-1)这种情况,我们考虑(g+pt)形式的数,看看是否能够找到合适的(t)。假设(g+pt)在模(p^2)下的阶为(r),那么
[ egin{aligned} (g+pt)^{r}equiv1(mod;p^2)&Rightarrow(g+pt)^requiv1(mod;p)&Rightarrow g^r+p(cdots)equiv1(mod;p)&Rightarrow g^requiv1(mod;p)&Rightarrow (p-1)|r end{aligned} ]
此时仍然有((p-1)|r|p(p-1))成立,即(r=p-1)(r=p(p-1))
[ egin{aligned} (g+pt)^{p-1}&equiv g^{p-1}+(p-1)g^{p-2}pt+p^2(cdots)&equiv g^{p-1}-g^{p-2}pt&equiv 1-g^{p-2}ptmod p^2 end{aligned} ]
只需要((g+pt)^{p-1} otequiv1(mod;p^2)),就可以保证(g+pt)的阶为(p(p-1))

因为((g,p)=1),所以只要(p mid t),就可以使得(g+pt)的阶为(p(p-1)),取(t=1)即可。

综上可知,若(g)(p)的原根,那么当(g^{p-1} otequiv1(mod;p^2))时,(g)(p^2)的原根,否则(g+p)(p^2)的原根。

已知(p^l(lge2))的原根,求(p^{l+1})的原根:

假设(p^l(lge2))的一个原根为(g),且(g)在模(p^{l+1})的阶为(d),仿照之前的证明,我们可以得到(p^{l-1}(p-1)|d|p^l(p-1))

因为(g)是模(p^l)的原根,所以
[ g^{p^{l-2}(p-1)} otequiv1(mod;p^l) ]
因为(varphi(p^{l-1})=p^{l-2}(p-1)),所以
[ g^{varphi(p^{l-1})}equiv g^{p^{l-2}(p-1)}equiv1mod p^{l-1} ]
因此,存在整数(t),使得(g^{p^{l-2}(p-1)}=1+p^{l-1}t),那么
[ g^{p^{l-2}(p-1)}=1+p^{l-1}t otequiv1mod p^l Rightarrow p mid t ]
因为
[ g^{varphi(p^l)}equiv g^{p^{l-1}(p-1)}=(1+p^{l-1}t)^p=1+p^lt+p^{l+1}(cdots) ]
由于已经知道(p mid t),所以
[ g^{p^{l-1}(p-1)}equiv1+p^lt+p^{l+1}(cdots)equiv1+p^lt otequiv1mod p^{l+1} ]
因此(d=p^l(p-1)),即(g)在模(p^{l+1})下的阶为(varphi(p^{l+1})),于是(g)(p^{l+1})的一个原根。

我们已经知道对于任意奇素数(p,p^2)均存在原根,结合上述我们证明的结论可知,(p^2)的原根也是(p^l(lge2))的原根。

因此,我们可以得到结论对于任意的(p^eta(etage1))(p)是奇素数)都有原根。

已知(p^{l+1})的原根求(p^l(lge1))的原根:

假设(p^{l+1})的原根(g),因为(g)可能大于(p^l),因此利用带余除法可以将(g)表示为:(g=p^lt+r(0<r<p^l))

假设(r)在模(p^l)的阶为(d),那么(d|varphi(p^l)),并且(r^dequiv1(mod;p^l))

因此存在整数(delta),使得(r^d=1+p^ldelta),于是我们可以得到
[ r^{pd}equiv(1+p^ldelta)^pequiv1+p^{l+1}delta+p^{l+2}(cdots)equiv1mod p^{l+1} ]
并且
[ 1equiv r^{pd}equiv(g-p^lt)^{pd}equiv g^{pd}+p^{l+1}(cdots)equiv g^{pd}mod p^{l+1} ]
因为(g)(p^{l+1})的原根,所以(varphi(p^{l+1})|pd),于是有(varphi(p^l)|d),因此(d=varphi(p^l))

综上可知,(g)也会是模(p^l)的一个原根。

6.3.2 情况2 (m=2^l,lge1)

可以验证2的原根为1,4的原根为3。接着我们证明对于其他情况下,不存在原根。

引理(lge3),则5模(2^l)的阶为(2^{l-2})

证明:

5的阶的所有可能值为
[ 2,2^2,cdots,2^{l-2},2^{varphi(2^l)}=2^{l-1} ]
为证明(5)的阶为(2^{l-2}),就需要说明(2^r(1le rle l-3)),满足(5^{2^r} otequiv1(mod;2^l))并且(5^{2^{l-2}}equiv1(mod;2^l))

因为对于(1le rle l-3),都有(2^r|2^{l-3})。因此我们只需要证明(5^{2^{l-3}} otequiv1(mod;2^l))并且(5^{2^{l-2}}equiv1(mod;2^l))

为了证明上述结论,首先证明下面同余式
[ forall lge3,5^{2^{l-3}}equiv1+2^{l-1}mod 2^l ]
(l=3)时,上述式子成立。

假设当(l=k)时,上述式子成立,即
[ 5^{2^{k-3}}equiv1+2^{k-1}mod 2^k ]
于是存在整数(delta),使得(5^{2^{k-3}}=1+2^{k-1}+2^kdelta)
[ egin{aligned} 5^{2^{k-2}}equiv(5^{2^{k-3}})^2&equiv(1+2^{k-1}+2^kdelta)^2&equiv1+2^{2k-2}+2^{2k}delta^2+2^k+2^{k+1}delta+2^{2k}delta&equiv1+2^kmod 2^{k+1} end{aligned} ]
即当(l=k+1)时,上述式子也成立。于是根据数学归纳法可知,上述式子对于(lge3)均成立。

可以验证,下面两个式子成立:

  • (5^{2^{l-3}} otequiv1+2^{l-1}mod 2^l)

  • (5^{2^{l-2}}equiv(1+2^{l-1})^2equiv1mod 2^l)

综上可知,当(lge3)时,5模(2^l)的阶为(2^{l-2})

构造两个集合:(A={5^b|1le ble 2^{l-2}},B={-5^b|1le ble 2^{l-2}}),根据上述我们证明的引理和定理6-2中的结论2,可以知道集合(A)内的元素两两模(2^l)不同余,集合(B)也是如此。

因为(A)中的元素模4余1,而(B)中的元素模4余-1,所以(A)(B)中的元素两两不同余,所以集合(Acup B)中一共有(varphi(2^l)=2^{l-1})个模(2^l)两两不同余的数。

又因为((5,2)=1),所以集合(Acup B)内的元素也和(2^l)互素。这意味着(Acup B)就是模(2^l)的一个简化剩余系。

集合定理6-2的结论3和上述引理,可以知道(Acup B)中元素的阶都不超过(2^{l-2}(<varphi(2^l))),因此模(2^l)不存在原根。

6.3.3 情况3 (m=2p^eta,etage1)

假设(p^eta)的一个奇数原根为(g),那么(g)也是(2p^eta)的原根。

证明如下:

先假设奇原根(g)在模(2p^eta)下的阶为(d)

因为(varphi(2p^eta)=varphi(2)varphi(p^eta)=varphi(p^eta)),并且(d|varphi(2p^eta)),所以(d|varphi(p^eta))

因为(g^dequiv1(mod;2p^eta)),所以(g^dequiv1(mod;p^eta)),于是有(varphi(p^eta)|d)

因此(d=varphi(p^eta)),即(g)(2p^eta)的一个原根。

对于(p^eta)的原根是偶数的情况,即(g)是偶数。显然这种情况,(g)不是模(2p^eta)的原根,因为偶数和(2p^eta)不互素。

此时考虑(g+p^eta)(奇数),同样假设(g+p^eta)在模(2p^eta)的阶为(d),在这种情况下仍然有(d|varphi(p^eta)),并且
[ (g+p^eta)^dequiv1(mod;2p^eta)Rightarrow (g+p^eta)^dequiv1(mod;p^eta) ]
所以
[ egin{aligned} 1&equiv(g+p^eta)^dequiv g^d+p^eta(cdots)equiv g^dmod p^eta end{aligned} ]
因此(varphi(p^eta)|d),于是有(d=varphi(p^eta)),即(g+p^eta)(2p^eta)的原根。

6.4 素数的原根

由定理6-4可知只要知道了素数的一个原根,那么其它的原根也可以通过该原根写出来,因此下面我们讨论如何寻找一个素数的原根。

方法一: 对于(a=2,3,cdots,p-1)进行逐个判断,我们知道一个整数的阶一定是欧拉函数的因子,因此检验整数(a)是素数(p)的原根方法如下:

(1)求出(varphi(p)=p-1)的所有非平凡因子(即真因子)(d)

(2)对每一个(d),都计算(a^d(mod;p))

(3)如果每一个(a^d(mod;p))都不为1,那么(a)就是(p)的一个原根。

方法二: 定理6-3提供了一个思路,如果已知(ord_p(a)=u,ord_p(b)=v,(u,v)=1),并且满足(varphi(p)=uv),那么(ab)就是模(p)的一个原根。但这个方法并不实用。

方法三: 该方法是一个判断整数是否为原根的充要条件。

如果(p)是奇素数,(q_1,q_2,cdots,q_k)(varphi(p)=p-1)的所有不同素因子,则(g)是模(p)的原根的充要条件为
[ g^{frac{p-1}{q_i}} otequiv1mod p,;i=1,2,cdots,k ]
必要性证明:如果(g)是原根,显然(g^{(p-1)/q_i} otequiv1(mod;p))成立,否则(g)的阶将小于(p-1)

充分性证明:

假设(g)不是原根,那么(g)的阶一定是(p-1)的某一个真因子(d)

因此存在大于1的正整数(s),使得(p-1=sd)。因为((s,p-1)=s>1),所以(s)(p-1)必然存在公共素因子(q_i)

于是
[ frac{p-1}{q_i}=frac{s}{q_i}dRightarrow d|frac{p-1}{q_i} Rightarrow g^{frac{p-1}{q_i}}equiv1mod p ]
因此该充要条件得到证明。

说明: 如果是找合数的原根,那么方法一和方法二也是可以使用的。并且只需要在简化剩余系内寻找即可。

6.5 原根的应用

离散对数问题: 已知(g)是素数(p)的原根,给定(1<y<p),求(x)使得(yequiv g^x(mod;p))。这样的问题称为离散对数问题。

我们知道在实数域上,我们要求解(x)就需要进行取对数,即(x=log_ay)。而在数论中我们研究的对象是整数,而整数是离散的,所以称之为离散对数问题。

签名算法: 常见的几种数字签名算法都需要利用到原根的性质,例如:DSA,ElGamal等。

以上是关于6 原根的主要内容,如果未能解决你的问题,请参考以下文章

hdu 4992 Primitive Roots 求原根模板

原根

HDU4992-原根

原根(模板+证明)

计蒜客 - 质数原根

1135 原根