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

1. 前言

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

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

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

一些符号说明:

  • φ(n)欧拉函数
  • abmodc 表示 a,bc 的值相等,这个式子叫做同余式

2. 前置知识

费马小定理:若 m 为质数并且 ma,则 am11modm

3. 欧拉定理

3.1 描述

欧拉定理描述如下:

gcd(a,m)=1,则 aφ(m)1modm

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

3.2 证明

x1,x2,...,xφ(m)φ(m) 个与 m 互质的数。

pi=axi

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


引理 1:i,j[1,φ(m)],pipj,xixj

证明如下:首先因为所有 xi<m,那么必然有 xixj

接下来反证法,假设 pipj

那么有 pipj0

a(xixj)0

但是 gcd(a,m)=1,因此 mxixj。但是 xixj0 且小于 m,矛盾。

综上引理 1 成立。


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

证明如下:

还是反证法。

pi=axi=km+r,即除以 m,那么有 gcd(r,m)>1

整理得 xi=km+ra

因为 xi 是个正整数,所以 gcd(a,km,r)=a

所以 gcd(a,r)=a

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

所以 k=a

但是因为 pi=axi,因此就要有 xi=mr=0,显然与假设矛盾,因此原假设错误。

综上,引理 2 成立。


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

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

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

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

因此我们就有 i=1φ(m)pii=1φ(m)xi

同余式的基本性质,约去 xi,我们可以得到 aφ(m)1

综上,欧拉定理成立。

4. 扩展欧拉定理

4.1 描述

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

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

ab{abmodφ(m)gcd(a,m)=1abgcd(a,m)1,bφ(m)a(bmodφ(m))+φ(m)gcd(a,m)1,b>φ(m)

4.2 证明

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


ababmodφ(m),gcd(a,m)=1

这个还是比较简单的。

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

因此原式得证。


abab,gcd(a,m)1,bφ(m)

啊不是这还需要证明吗qwq


aba(bmodφ(m))+φ(m),gcd(a,m)1,b>φ(m)

首先对 a 做一个质因数分解 a=i=1kpiri

因此根据同余式可以同乘的性质,我们的目标变成了证明 a=piri 时上式成立。

显然 piri 也是可以由 ripi 同乘的,因此我们的最终目的变成了证明当 a 是个质数的时候上式成立。

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

考虑引入一个数 sa 互质,令 m=s×ac,cφ(m)

  • 实际上 cφ(m) 是必定成立的,因为总共与 m 互质的数有 φ(m) 个,而且φ(m)=φ(s)×φ(ac)=φ(s)×c,φ(s)1,因此有 cφ(m)

根据欧拉定理,有 aφ(s)1mods

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

  • nN+,p 为质数,那么:

    φ(n×p)={φ(n)×φ(p)pnφ(n)×ppn

我们可以得到 φ(s)φ(m)

因此有 aφ(m)=aφ(s)×φ(m)φ(s)1mods

两遍同乘以 ac(注意模数变成了 m),有 aφ(m)+cac

于是 ab=abc+c=ac×abcaφ(m)+b,bc

因为任意 cφ(m) 上式都成立,因此有 abaφ(m)+b

上式等价于 aba(bmodφ(m))+φ(m)

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

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


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

4.3 辅助说明

扩展欧拉定理:

ab{abmodφ(m)gcd(a,m)=1abgcd(a,m)1,bφ(m)a(bmodφ(m))+φ(m)gcd(a,m)1,b>φ(m)


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

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

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

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

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

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


或许有的人问了:对于第二个式子 abab,gcd(a,m)1,bφ(m),为什么其不等价于第三个式子?

解释如下:

首先因为 gcd(a,m)1,我们知道欧拉定理不成立,也就是 aφ(m)1

因此对第三个式子做一个拆分:ababmodφ(m)×aφ(m)

我们发现因为 aφ(m)1,因此我们不能在第二个式子两边同时乘以 aφ(m)

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

4.4 例题

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

扩展欧拉定理板子题。

特别需要注意 bφ(m) 的情况,此种情况 b 不能加上 φ(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. 总结

扩展欧拉定理:

ab{abmodφ(m)gcd(a,m)=1abgcd(a,m)1,bφ(m)a(bmodφ(m))+φ(m)gcd(a,m)1,b>φ(m)

posted @   Plozia  阅读(412)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示