原根存在性定理的证明
定义模m意义下满足阶为φ(m)的元素为m的原根,求证m∈N+的原根存在,当且仅当m∈{2,4,pa,2pa|p∈∁P{2},a∈Z+},其中P为素数集。显然,如果m的原根存在,那么m的既约剩余系就是以原根为生成元的φ(m)阶乘法循环群。
若m的原根存在,则m有φ(φ(m))个原根,φ为[欧拉函数](欧拉函数_百度百科 (baidu.com))。
参考资料:[原根存在性定理的群论证明 - 知乎](原根存在性定理的群论证明 - 知乎 (zhihu.com))
m=2,4时显然,原根分别为1,3,而且他们也都只有一个原根。
先证明p∈∁P{2} 有原根。
记S(d)={x∈Z∗p|δp(x)=d},其中Z∗p是p的既约剩余系,δp(x)为模p意义下x的阶,即满足xk≡1(modp)的最小正整数k记为δp(x)。那么S(d)就是模p意义下的既约剩余系中的所有阶为d的元素。
那么根据定义,S(φ(p))中的所有元素都是p的原根。
由欧拉定理,模p意义下所有数的阶必定是φ(p)的因子,所以只有d|φ(p)=p−1的时候S(d)才不是空集。
欧拉定理的证明本来想直接引用百度百科的,但是看了一眼发现它没有证明引理。。。
引理:若{ai|1≤i≤φ(m)}构成m的既约剩余系,那么{bai|1≤i≤φ(m),b⊥m}也是m的既约剩余系。
证明:反证法。否则就存在bai≡baj(modm)(i≠j)。然后b⊥m就保证了模m意义下b的乘法逆元存在,也就是说它支持等号两边同时除去一个作为乘数的b,那么就变成了ai≡aj(modm)(i≠j),这和{ai}是既约剩余系矛盾。因此同时乘上一个与m互质的数之后既约剩余系还是既约剩余系。
证明欧拉定理:取m的既约剩余系a1,…,aφ(m),那么在模m意义下随便取一个和m互质的正整数a,一定满足aa1,…,aaφ(m)也是既约剩余系。则φ(m)∏i=1ai≡φ(m)∏i=1aai≡aφ(m)φ(m)∏i=1ai(modm)。又因为ai构成既约剩余系,所以他们的乘法逆元都存在,左边和右边同时除以他们的累乘,可以得到aφ(m)≡1(modm)。同时,又因为δm(a)是满足ak≡1的最小正整数k,所以必定有δm(a)|φ(m)。这两个公式就被称为欧拉定理。
而且诸多S(d)也构成了Z∗p的划分,即所有S(d)并起来就可以得到Z∗p。
所以可以有∑d|φ(p)|S(d)|=|Z∗p|=φ(p)
同时我们可以证明∑d|φ(p)φ(d)=∑pd|φ(p)φ(d)=∑d|φ(p)φ(pd)
明显,∀1≤a≤p,总共有p个整数取值。
同样,对于所有的a,它与m的最大公因数gcd(a,m)一定是m的因数(废话),那么就记这个最大公因数为d=gcd(a,m),同时除以这个数,得到gcd(ad,pd)=1,那么对于每一个d|p,就会有φ(pd)个ad与之互质。所以说,∑d|pφ(pd)=p。
也可以这样理解,一方面来说a总共有p个,另一方面来说要满足gcd(ad,pd)=1的a有φ(pd)个,因此∑d|pφ(d)=p
如果代入φ(p)就可以得到∑d|φ(p)φ(d)=φ(p)
那么隔起来,我们可以说,∑d|φ(p)φ(d)=φ(p)=∑d|φ(p)|S(d)|
这个时候我们就有个猜想,有没有可能∀d|φ(p),|S(d)|=φ(d)。如果这个成立,那么我们就可以得到|S(φ(p))|=φ(φ(p))。那么这样p的原根存在而且有φ(φ(p))个。
∀S(d)≠∅,∃a∈S(d),s.t.ad≡1(modp)
根据阶的定义,应该有a0,a1,…,ad−1在模p意义下互不相同,虽然但是,他们都是xd≡1(modp) 的解。我们也可以根据数学归纳法证明d次方程的解最多有d个。因此上面d个数就恰好是xd≡1(modp)的所有根。
数学归纳法证明d次方程最多有d个根:
首先对于一次方程ax+b=0(a≠0),显然最多有一个解。
如果n次方程(n∈N+)最多只有n个解成立,那么对于n+1次方程,如果他能有n+2或更多个解,那么对于他的一个解x0,我们可以把这个方程写成(x−x0)fn(x)=0,这是一个关于x的方程,fn(x)是关于x的一个n次多项式。
那么x=x0是这个方程的一个解,照这么说fn(x)=0应该有n+1或更多个解。然而我们的前提是n次方程最多只有n个解。因此这个结论和前提不符。只要前提成立我们的假设就不可能成立。然而n=1时前提成立,所以对于所有自然数,我们的假设都不成立,它的否定命题成立,n+1次方程最多有n+1个解。
那么我们可以说,a0,a1,…,ad−1包含了所有满足xd≡1(modp)的解,也就是包含了Z∗p中所有阶为d的元。
那么ak(k=0,1,…,d−1)就是这个乘法循环群中的d阶生成元。然而a也是这个乘法循环群的d阶生成元。
有下面这个式子:如果a是d阶生成元,那么ak就是dgcd(d,k)阶生成元。简单说明一下,因为ad≡0(modp),所以alcm(d,k)≡1(modp)。然后lcm(d,k)=dkgcd(d,k),摁提出一个k之后就是ak的阶。
然后所有的ak都是d阶元,这就说明gcd(d,k)=1,即d⊥k,这样的k有φ(d)个。
所以,card({ak})=|S(d)|=φ(d),我们的猜想是对的!
那么就证明了p是奇素数的时候原根存在性定理是正确的。
这个时候考虑pa(p∈∁P{2},a∈N+)推导到pa+1。如果这个关系成立,那么数学归纳法就帮我们证明了所有奇素数的正整数次幂情况下原根存在性定理的正确性。
假设pa时原根存在性定理成立,它的某个原根记为g,同时记r=δpa+1(g)为g在pa+1意义下的阶。
根据欧拉定理,有r|φ(pa+1)。同时考虑r,φ(pa)的关系。现在已经知道原根g满足gφ(pa)≡1(modpa),gr≡1(modp⋅pa)
既然模pa+1意义下gr都是1了,那么模数是他的因数pa肯定也是1。
严谨来说,我们把上面第二个同余方程转化为不定方程,就会有gr+kp⋅pa=1(k∈Z)
我们也可以写成gr+kp⋅pa=1(kp∈Z),那么久可以转化为同余方程gr≡1(modpa)
同时我们也知道δpa(g)=φ(pa)应该是满足这个数的最小正整数,那么不妨设r=kφ(pa)+s,其中k为r除以φ(pa)的商,s是余数,因此0≤s<φ(pa)。由阶的定义可得,∀0<s<δpa(g)=φ(pa),gs≢1(modpa),因此要让gr≡1(modpa)就只能s=0,也就是能整除。
那么现在我们就知道了φ(pa)|r,r|φ(pa+1)。而φ(pa)=pa−1(p−1),φ(pa+1)=pa(p−1)他们只差一个质因数p,因此r∈{φ(pa),φ(pa+1)}
那么此时可以考虑两个数g,g+p在pa+1下的阶u,v∈{φ(pa),φ(pa+1)}。如果u=v=φ(pa),那么就会有(g+p)φ(pa)≡1(modpa+1)
用二项式定理展开一下,可以得到(g+p)φ(pa)≡∑φ(pa)i=0Ciφ(pa)pigφ(pa)−i(modpa+1)
代入φ(pa)=pa−1(p−1)可以得到φ(pa)∑i=0Cipa−1(p−1)pigφ(pa)−i
代入组合数计算式得到φ(pa−1)∑i=0[pa(1−1p)]!i!(φ(pa)−i)!pigφ(pa)−i,这个式子要对pa+1取模。
然后我们惊喜的发现,在i>1之后,后面的pi和分子里阶乘第一项所包含的pa−1就能组合成pa+1的倍数,因此后面的求和项都可以忽略!
那么i=0,1的时候式子的和就是我们要求的数的值。虽然最后的式子很不好看,但是我们回到刚展开的时候用组合数表示的式子,i=0的时候式子就是gφ(pa),根据我们的假设它应该是1。那么i=1的时候式子的值为φ(pa)pgφ(pa)−1。
两个式子加起来得到1+φ(pa)pgφ(pa)−1≡(g+p)φ(pa)≡1(modpa+1)
那么我们可以同时减去1,得到φ(pa)pgφ(pa)−1≡0(modpa+1)。代入φ(pa)=pa(1−1p)
得到pa+1gφ(pa)−1−pgφ(pa)−1≡0(modpa+1),前面被减数是模数的倍数直接忽略,而后面那个减数也要是零,就说明gφ(pa)−1应该是pa的倍数,也就是我们可以得出gφ(pa)−1≡0(modpa),这就与gφ(pa)≡1 相矛盾。
因此,g,g+p的阶u,v不可能同时为φ(pa),至少有一个为φ(pa+1),那么就至少有一个是pa+1的原根了。
然后,只要它有一个原根,那就说明它的既约剩余系是一个φ(pa+1)阶乘法循环群,这个循环群中生成元gk的个数就是φ(|gk|)=φ(φ(pa+1))
因此对于奇素数的正整数次幂的原根存在性定理得证。
现在考虑奇素数的正整数次幂的两倍
这个很好证这个非常好证这个可好证了哎哟。
首先φ(pa)=φ(2pa),证明方法就是把他们展开,得到pa(1−1p)=2pa(1−1p)(1−12),然后就证完了。
所以我们可以记k=φ(pa)=φ(2pa),那么gk≡1(modpa),那么在模2pa意义下gk就可能是1,pa+1中的一个。
考虑在模2pa意义下化简(g+pa)k
(g+pa)k=k∑i=0Cikgipa(k−i)
因为k=φ(pa)=pa−1(p−1),而p是奇数所以k是偶数,那么对于所有的C1k,C2k,…,Ck−1k,他们计算式的分子中总有一个k无法消去,因此他们都会是偶数。然后如果i<k那么后面怎么说都会有一个pa的正整数次幂。两个组合起来就可以说明对于0<i<k,第i项是2pa的倍数,直接忽略就好。
那么剩下第0和第k项,他们分别是pak和gk。
先看pak在模2pa意义下是什么值。乍一看不好做,但是我们可以提取一个pa出来变成pa⋅pa(k−1)
然后不停减去2pa。因为pa(k−1)肯定是个奇数因此最后肯定剩下一个pa
那么,对于pa的原根g,如果他也是2pa的原根,那么(g+pa)就不是。否则,如果g不是2pa的原根,那么它在模2pa意义下就应该是pa+1,而(g+pa)k≡pak+gk≡pa+pa+1≡1(mod2pa),说明g+pa是一个原根。
于是我们就很愉快证明了2pa也有原根了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2021-07-27 最长子序列(线性DP)学习笔记