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)),那么有以下结论成立:
- 设(s,t)是正整数,则(a^sequiv a^t(mod;m))当且仅当(sequiv t(mod;r))。
- 整数(a,a^2,cdots,a^r)中任意两个数都模(m)互不同余。
- 设(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 原根的主要内容,如果未能解决你的问题,请参考以下文章