夜深人静写算法(三十三)- 扩展欧拉定理

Posted 英雄哪里出来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了夜深人静写算法(三十三)- 扩展欧拉定理相关的知识,希望对你有一定的参考价值。

一、前言

  最近做公众号,逐渐开始进入迷茫期,原因可能来自于对自己的期望太大吧。其实一开始写算法类的文章,只是为了记录下青春,让将来年迈的自己回头来看当年的自己也曾一腔热血,风华正茂,能有一两个读者赞同我写的内容也曾欣喜若狂。
  然而,随着读者不断增多,难免陷入众星捧月的怪圈之中无法自拔,对于现在技术公众号内卷严重,作者比读者还多的情况下,要做到独善其身,不忘初心 真的是一件难能可贵的事情。在这里插入图片描述

二、扩展欧拉定理

  • 今天要讲的这个定理,我在一般的初等数论书上没有找到,但是网上可以搜到,怀疑是一些牛逼的 OIer 或者 ACMer 总结出来的,这里再次膜拜一下各位大佬们,让我们这些后辈又可以多刷一些题了。
  • 这个定理就是扩展欧拉定理,顾名思义,是对欧拉定理的一种扩展。学了这个定理以后,在解题过程中,你可以把 欧拉定理 和 费马小定理 都忘了,因为它已经完全包含了前面两者。

1、欧拉定理的局限性

  • 我们知道欧拉定理的定义如下:

n n n a a a 为正整数,且 n n n, a a a 互素,即 g c d ( a , n ) = 1 gcd(a,n) = 1 gcd(a,n)=1,则: a ϕ ( n ) ≡ 1 ( m o d   n ) a^{\\phi(n)} \\equiv 1 (mod \\ n) aϕ(n)1(mod n)

  • 这个公式可以用来做幂运算的降幂操作,但是有个限制条件就是 n n n, a a a 必须互素。那么,当 n n n, a a a 不互素的时候,如何来做降幂呢?这时就需要用到【扩展欧拉定理】了。

2、扩展欧拉定理定义

【定义1】对于任意正整数 a a a, b b b, c c c,必定满足: a b   m o d   c = { a b   m o d   c b < ϕ ( c ) a b m o d    ϕ ( c ) + ϕ ( c )   m o d   c b ≥ ϕ ( c ) a^{b} \\ mod \\ c = \\begin {cases} a^{b} \\ mod \\ c & { b < \\phi(c)} \\\\ a^{b \\mod \\phi(c) + \\phi(c)} \\ mod \\ c & { b \\ge \\phi(c)} \\end {cases} ab mod c={ab mod cabmodϕ(c)+ϕ(c) mod cb<ϕ(c)bϕ(c)

3、扩展欧拉定理证明

1)引理介绍

  • 在定理证明之前,我们需要介绍一些证明扩展欧拉定理成立需要用到的前置知识点,就是所谓的引理。当然了,如果对证明没有兴趣,可以直接看第三部分的 扩展欧拉定理的应用。

【引理1】对于 x ≡ y ( m o d   p ) x \\equiv y(mod \\ p) xy(mod p) x ≡ y ( m o d   q ) x \\equiv y(mod \\ q) xy(mod q) 同时成立,且满足 p p p q q q 互素,那么有 x ≡ y ( m o d   p q ) x \\equiv y(mod \\ pq) xy(mod pq)

证明:

  • 首先, x ≡ y ( m o d   p ) x \\equiv y(mod \\ p) xy(mod p) 的含义是 ( x − y ) (x-y) (xy) p p p 的倍数,表示成:
  • ( x − y ) = k 1 p (x-y) = k_1p (xy)=k1p
  • 同理,有:
  • ( x − y ) = k 2 q (x-y) =k_2q (xy)=k2q
  • 其中, k 1 k_1 k1 k 2 k_2 k2 均为整数。
  • 这里 ( x − y ) (x-y) (xy) p p p 的倍数,也是 q q q 的倍数,所以它是 p p p q q q 的公倍数,即 l c m ( p , q ) lcm(p,q) lcm(p,q),又因为 p p p q q q 互素,所以 l c m ( p q ) = p q lcm(pq) = pq lcm(pq)=pq,从而得到:
  • x ≡ y ( m o d   p q ) x \\equiv y (mod \\ pq) xy(mod pq)
    略带不屑的你

【引理2】对于互素的两个数 p p p q q q,有 ϕ ( p q ) = ϕ ( p ) ϕ ( q ) \\phi(pq) = \\phi(p)\\phi(q) ϕ(pq)=ϕ(p)ϕ(q) 成立。


【引理3】(欧拉定理) n n n a a a 为正整数,且 n n n, a a a 互素,即 g c d ( a , n ) = 1 gcd(a,n) = 1 gcd(a,n)=1,则: a ϕ ( n ) ≡ 1 ( m o d   n ) a^{\\phi(n)} \\equiv 1 (mod \\ n) aϕ(n)1(mod n)

证明:


【引理4】对于素数的幂 p e p^e pe,必然有 ϕ ( p e ) ≥ e \\phi(p^e) \\ge e ϕ(pe)e

证明:

  • 首先根据欧拉函数的性质,我们知道 ϕ ( p e ) = p e − 1 ( p − 1 ) \\phi(p^e) = p^{e-1}(p-1) ϕ(pe)=pe1(p1),对于这个函数而言, p p p 越大,值越大,所以我们取 p p p 最小的情况,如果能够满足 ϕ ( p e ) ≥ e \\phi(p^e) \\ge e ϕ(pe)e,那么对所有的 p , e p,e p,e 就都能成立了。
  • g ( e ) = p e − 1 ( p − 1 ) − e g(e) = p^{e-1}(p-1) - e g(e)=pe1(p1)e,当 p = 2 p=2 p=2 时,有 g ( e ) = 2 e − 1 − e g(e) = 2^{e-1} - e g(e)=2e1e,很容易得到整函数随着 e e e 的增大, g ( e ) g(e) g(e) 会越来越大,所以必然可以满足 2 e − 1 ≥ e 2^{e-1} \\ge e 2e1e
  • 从而, ϕ ( p e ) ≥ e \\phi(p^e) \\ge e ϕ(pe)e 得证。
    若有所思的你

2)定理证明