数论专题-学习笔记:欧拉定理与扩展欧拉定理

1. 前言

欧拉定理与扩展欧拉定理,是数论中的一个很重要的定理。

该定理可以将形如 a b a^b ab 的式子的指数降得很低,通常可以降到 log ⁡ b \log b logb 可接受范围内,这样就可以用快速幂计算了。

若无特殊说明,本文所有数都是正整数。

一些符号说明:

  • φ ( n ) \varphi(n) φ(n)欧拉函数
  • a ≡ b   m o d   c a \equiv b \bmod c abmodc 表示 a , b a,b a,b c c c 的值相等,这个式子叫做同余式

2. 前置知识

费马小定理:若 m m m 为质数并且 m ∤ a m \nmid a ma,则 a m − 1 ≡ 1   m o d   m a^{m-1} \equiv 1 \bmod m am11modm

3. 欧拉定理

3.1 描述

欧拉定理描述如下:

gcd ⁡ ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1,则 a φ ( m ) ≡ 1   m o d   m a^{\varphi(m)} \equiv 1 \bmod m aφ(m)1modm

结合上面的费马小定理可以发现,费马小定理实际上就是欧拉定理的一种特殊情况。

3.2 证明

x 1 , x 2 , . . . , x φ ( m ) x_1,x_2,...,x_{\varphi(m)} x1,x2,...,xφ(m) φ ( m ) \varphi(m) φ(m) 个与 m m m 互质的数。

p i = a x i p_i=ax_i pi=axi

下面若无特殊说明,同余式均对 m m m 取模。


引理 1: ∀ i , j ∈ [ 1 , φ ( m ) ] , p i ≢ p j , x i ≢ x j \forall i,j \in[1,\varphi(m)],p_i \not \equiv p_j,x_i \not \equiv x_j i,j[1,φ(m)],pipj,xixj

证明如下:首先因为所有 x i < m x_i<m xi<m,那么必然有 x i ≢ x j x_i \not \equiv x_j xixj

接下来反证法,假设 p i ≡ p j p_i \equiv p_j pipj

那么有 p i − p j ≡ 0 p_i - p_j \equiv 0 pipj0

a ( x i − x j ) ≡ 0 a(x_i-x_j) \equiv 0 a(xixj)0

但是 gcd ⁡ ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1,因此 m ∣ x i − x j m \mid x_i-x_j mxixj。但是 x i − x j ≠ 0 x_i-x_j \not = 0 xixj=0 且小于 m m m,矛盾。

综上引理 1 成立。


引理 2:所有 p p p m m m 的结果都与 m m m 互质。

证明如下:

还是反证法。

p i = a x i = k m + r p_i=ax_i=km+r pi=axi=km+r,即除以 m m m,那么有 gcd ⁡ ( r , m ) > 1 \gcd(r,m)>1 gcd(r,m)>1

整理得 x i = k m + r a x_i=\dfrac{km+r}{a} xi=akm+r

因为 x i x_i xi 是个正整数,所以 gcd ⁡ ( a , k m , r ) = a \gcd(a,km,r)=a gcd(a,km,r)=a

所以 gcd ⁡ ( a , r ) = a \gcd(a,r)=a gcd(a,r)=a

然而 gcd ⁡ ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1,因此只有 gcd ⁡ ( a , k m ) = a \gcd(a,km)=a gcd(a,km)=a 才能够做到 gcd ⁡ ( a , k m , r ) = a \gcd(a,km,r)=a gcd(a,km,r)=a

所以 k = a k=a k=a

但是因为 p i = a x i p_i=ax_i pi=axi,因此就要有 x i = m x_i=m xi=m r = 0 r=0 r=0,显然与假设矛盾,因此原假设错误。

综上,引理 2 成立。


有了这两个引理之后,我们就可以证明欧拉定理了。

由引理 2,所有 p p p m m m 的结果都与 m m m 互质。

由引理 1,任意两个 p p p 之间模 m m m 不同余,任意两个 x x x 之间模 m m m 不同余。

因此我们可以得到所有 p p p m m m 的结果组成的集合与 x x x m m m 的结果组成的集合是相同的。

因此我们就有 ∏ i = 1 φ ( m ) p i ≡ ∏ i = 1 φ ( m ) x i \prod\limits_{i=1}^{\varphi(m)}p_i \equiv \prod\limits_{i=1}^{\varphi(m)}x_i i=1φ(m)pii=1φ(m)xi

同余式的基本性质,约去 ∏ x i \prod x_i xi,我们可以得到 a φ ( m ) ≡ 1 a^{\varphi(m)}\equiv 1 aφ(m)1

综上,欧拉定理成立。

4. 扩展欧拉定理

4.1 描述

扩展欧拉定理是欧拉定理的扩展,该定理将欧拉定理扩展到了 gcd ⁡ ( a , m ) \gcd(a,m) gcd(a,m) 为任意数的情况。

其描述如下(均对 m m m 取模):

a b ≡ { a b   m o d   φ ( m ) gcd ⁡ ( a , m ) = 1 a b gcd ⁡ ( a , m ) ≠ 1 , b ≤ φ ( m ) a ( b   m o d   φ ( m ) ) + φ ( m ) gcd ⁡ ( a , m ) ≠ 1 , b > φ ( m ) a^b \equiv \begin{cases}a^{b \bmod \varphi(m)}&\gcd(a,m)=1\\a^b&\gcd(a,m)\ne1,b \leq\varphi(m)\\a^{(b \bmod \varphi(m))+\varphi(m)}&\gcd(a,m)\ne1,b>\varphi(m)\end{cases} ababmodφ(m)aba(bmodφ(m))+φ(m)gcd(a,m)=1gcd(a,m)=1,bφ(m)gcd(a,m)=1,b>φ(m)

4.2 证明

下面同余式无说明均对 m m m 取模。


a b ≡ a b   m o d   φ ( m ) , gcd ⁡ ( a , m ) = 1 a^b \equiv a^{b \bmod \varphi(m)},\gcd(a,m)=1 ababmodφ(m),gcd(a,m)=1

这个还是比较简单的。

由欧拉定理, a φ ( m ) ≡ 1 a^{\varphi(m)} \equiv 1 aφ(m)1,因此实际上我们两遍同时除以 a φ ( m ) a^{\varphi(m)} aφ(m) 是可行的。

因此原式得证。


a b ≡ a b , gcd ⁡ ( a , m ) ≠ 1 , b ≤ φ ( m ) a^b \equiv a^b,\gcd(a,m) \ne1,b \leq \varphi(m) abab,gcd(a,m)=1,bφ(m)

啊不是这还需要证明吗qwq


a b ≡ a ( b   m o d   φ ( m ) ) + φ ( m ) , gcd ⁡ ( a , m ) ≠ 1 , b > φ ( m ) a^b \equiv a^{(b \bmod \varphi(m)) + \varphi(m)},\gcd(a,m) \ne 1,b > \varphi(m) aba(bmodφ(m))+φ(m),gcd(a,m)=1,b>φ(m)

首先对 a a a 做一个质因数分解 a = ∏ i = 1 k p i r i a=\prod_{i=1}^{k}p_i^{r_i} a=i=1kpiri

因此根据同余式可以同乘的性质,我们的目标变成了证明 a = p i r i a=p_i^{r_i} a=piri 时上式成立。

显然 p i r i p_i^{r_i} piri 也是可以由 r i r_i ri p i p_i pi 同乘的,因此我们的最终目的变成了证明当 a a a 是个质数的时候上式成立。

接下来的证明都只考虑 a a a 为质数。

考虑引入一个数 s s s a a a 互质,令 m = s × a c , c ≤ φ ( m ) m=s \times a^c,c \leq \varphi(m) m=s×ac,cφ(m)

  • 实际上 c ≤ φ ( m ) c \leq \varphi(m) cφ(m) 是必定成立的,因为总共与 m m m 互质的数有 φ ( m ) \varphi(m) φ(m) 个,而且 φ ( m ) = φ ( s ) × φ ( a c ) = φ ( s ) × c , φ ( s ) ≥ 1 \varphi(m)=\varphi(s) \times \varphi(a^c)=\varphi(s) \times c,\varphi(s) \geq 1 φ(m)=φ(s)×φ(ac)=φ(s)×c,φ(s)1,因此有 c ≤ φ ( m ) c \leq \varphi(m) cφ(m)

根据欧拉定理,有 a φ ( s ) ≡ 1   m o d   s a^{\varphi(s)} \equiv 1 \bmod s aφ(s)1mods

因为 gcd ⁡ ( s , a ) = 1 \gcd(s,a)=1 gcd(s,a)=1,根据欧拉函数的下面这条性质:

  • n ∈ N + , p n \in N_+,p nN+,p 为质数,那么: φ ( n × p ) = { φ ( n ) × φ ( p ) p ∤ n φ ( n ) × p p ∣ n \varphi(n \times p)=\begin{cases}\varphi(n) \times \varphi(p)&p \nmid n\\\varphi(n) \times p&p \mid n\end{cases} φ(n×p)={φ(n)×φ(p)φ(n)×ppnpn

我们可以得到 φ ( s ) ∣ φ ( m ) \varphi(s) \mid \varphi(m) φ(s)φ(m)

因此有 a φ ( m ) = a φ ( s ) × φ ( m ) φ ( s ) ≡ 1   m o d   s a^{\varphi(m)} =a^{\varphi(s) \times \frac{\varphi(m)}{\varphi(s)}}\equiv 1 \bmod s aφ(m)=aφ(s)×φ(s)φ(m)1mods

两遍同乘以 a c a^c ac(注意模数变成了 m m m),有 a φ ( m ) + c ≡ a c a^{\varphi(m)+c} \equiv a^{c} aφ(m)+cac

于是 a b = a b − c + c = a c × a b − c ≡ a φ ( m ) + b , b ≥ c a^b=a^{b-c+c} =a^c \times a^{b-c}\equiv a^{\varphi(m)+b},b \geq c ab=abc+c=ac×abcaφ(m)+b,bc

因为任意 c ≤ φ ( m ) c \leq \varphi(m) cφ(m) 上式都成立,因此有 a b ≡ a φ ( m ) + b a^b \equiv a^{\varphi(m)+b} abaφ(m)+b

上式等价于 a b ≡ a ( b   m o d   φ ( m ) ) + φ ( m ) a^b \equiv a^{(b \bmod \varphi(m))+\varphi(m)} aba(bmodφ(m))+φ(m)

因此我们成功的证明了 a a a 是个质数的时候原式成立。

那么根据我们一开始的理论,可以证出原式对于任意 a a a 都成立。


综上,扩展欧拉定理成立。

4.3 辅助说明

扩展欧拉定理:

a b ≡ { a b   m o d   φ ( m ) gcd ⁡ ( a , m ) = 1 a b gcd ⁡ ( a , m ) ≠ 1 , b ≤ φ ( m ) a ( b   m o d   φ ( m ) ) + φ ( m ) gcd ⁡ ( a , m ) ≠ 1 , b > φ ( m ) a^b \equiv \begin{cases}a^{b \bmod \varphi(m)}&\gcd(a,m)=1\\a^b&\gcd(a,m)\ne1,b \leq\varphi(m)\\a^{(b \bmod \varphi(m))+\varphi(m)}&\gcd(a,m)\ne1,b>\varphi(m)\end{cases} ababmodφ(m)aba(bmodφ(m))+φ(m)gcd(a,m)=1gcd(a,m)=1,bφ(m)gcd(a,m)=1,b>φ(m)


首先观察一下第一个式子和第三个式子。

我们发现实际上这两个式子对于 b > φ ( m ) b>\varphi(m) b>φ(m) 的时候是等价的。

因此一般做题的时候我们不需要记第一个式子,只记第二个和第三个式子就好。

对于 b > φ ( m ) b>\varphi(m) b>φ(m) 的情况刚刚已经说过第一个式子与第二个式子等价。

对于 b ≤ φ ( m ) b \leq \varphi(m) bφ(m) 的情况因为 a b = a b a^b=a^b ab=ab 恒成立(难道不是吗),所以第一个式子和第二个式子等价。

当然如果出现了 gcd ⁡ ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1 的情况实际上我们可以直接用欧拉定理即可。


或许有的人问了:对于第二个式子 a b ≡ a b , gcd ⁡ ( a , m ) ≠ 1 , b ≤ φ ( m ) a^b \equiv a^b,\gcd(a,m) \ne 1,b \leq \varphi(m) abab,gcd(a,m)=1,bφ(m),为什么其不等价于第三个式子?

解释如下:

首先因为 gcd ⁡ ( a , m ) ≠ 1 \gcd(a,m) \ne 1 gcd(a,m)=1,我们知道欧拉定理不成立,也就是 a φ ( m ) ≢ 1 a^{\varphi(m)} \not \equiv 1 aφ(m)1

因此对第三个式子做一个拆分: a b ≡ a b   m o d   φ ( m ) × a φ ( m ) a^b \equiv a^{b \bmod \varphi(m)} \times a^{\varphi(m)} ababmodφ(m)×aφ(m)

我们发现因为 a φ ( m ) ≢ 1 a^{\varphi(m)} \not \equiv 1 aφ(m)1,因此我们不能在第二个式子两边同时乘以 a φ ( m ) a^{\varphi(m)} aφ(m)

至于第三个式子可以其实是因为需要将 b b b 拆掉,这个时候需要 b > φ ( m ) b > \varphi(m) b>φ(m)

4.4 例题

例题:P5091 【模板】扩展欧拉定理

扩展欧拉定理板子题。

特别需要注意 b ≤ φ ( m ) b \leq \varphi(m) bφ(m) 的情况,此种情况 b b b 不能加上 φ ( m ) \varphi(m) φ(m)

代码:

/*
========= Plozia =========
    Author:Plozia
    Problem:P5091 【模板】扩展欧拉定理
    Date:2021/5/19
========= Plozia =========
*/

#include <bits/stdc++.h>

typedef long long LL;
// const int MAXN = ;
LL a, b, m, phi = 1;
bool flag = 0;

LL read()
{
    LL sum = 0, fh = 1; char ch = getchar();
    for (; ch < '0' || ch > '9'; ch = getchar()) fh -= (ch == '-') << 1;
    for (; ch >= '0' && ch <= '9'; ch = getchar()) sum = (sum << 3) + (sum << 1) + (ch ^ 48);
    return sum * fh;
}

LL Specail_read()
{
    LL sum = 0, fh = 1; char ch = getchar();
    for (; ch < '0' || ch > '9'; ch = getchar()) fh -= (ch == '-') << 1;
    for (; ch >= '0' && ch <= '9'; ch = getchar())
    {
        sum = sum * 10ll + ch - '0';
        if (sum > phi) { sum %= phi; flag = 1; }
    }
    return sum * fh;
}

LL ksm(LL fir, LL sec, LL p)
{
    LL ans = 1 % p;
    for (; sec; sec >>= 1, fir = fir * fir % p)
        if (sec & 1) ans = ans * fir % p;
    return ans;
}

void Get_phi()
{
    int i, c = m;
    for (i = 2; i * i <= c; ++i)
    {
        int sum = 0;
        while (c % i == 0) { ++sum; c /= i; }
        if (sum != 0) phi *= (LL)(i - 1) * ksm(i, sum - 1, m);
    }
    if (c != 1) phi *= (c - 1);
}

int main()
{
    a = read(), m = read(); Get_phi();
    b = Specail_read();
    if (flag) b += phi;
    printf("%lld\n", ksm(a, b, m));
    return 0;
}

5. 总结

扩展欧拉定理:

a b ≡ { a b   m o d   φ ( m ) gcd ⁡ ( a , m ) = 1 a b gcd ⁡ ( a , m ) ≠ 1 , b ≤ φ ( m ) a ( b   m o d   φ ( m ) ) + φ ( m ) gcd ⁡ ( a , m ) ≠ 1 , b > φ ( m ) a^b \equiv \begin{cases}a^{b \bmod \varphi(m)}&\gcd(a,m)=1\\a^b&\gcd(a,m)\ne1,b \leq\varphi(m)\\a^{(b \bmod \varphi(m))+\varphi(m)}&\gcd(a,m)\ne1,b>\varphi(m)\end{cases} ababmodφ(m)aba(bmodφ(m))+φ(m)gcd(a,m)=1gcd(a,m)=1,bφ(m)gcd(a,m)=1,b>φ(m)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值