欧拉定理及扩展

目录

  • 欧拉定理(EX及证明)

    • 欧拉函数

      • 定义
      • 性质
      • 如何求欧拉函数
    • 欧拉定理
      • 定义
      • 证明
      • 代码
    • 扩展欧拉定理
      • 定义
      • 证明
      • \(\bf code\)

欧拉定理(EX及证明)

  • 本篇很多推论基于质数唯一分解定理,请读者先行了解。

欧拉函数

定义

有两种:

  1. 定义欧拉函数 \(\varphi(x)\) 表示小于 \(x\) 且与 \(x\) 互质的数的个数,定义 \(1\) 与任何数互质。
  2. 定义剩余类 \(c_i\) 是 \(mod\;x=i\) 的数的集和,即所有 \(a\%x=i\) 的 \(a\)。一般可以用其中的一个 \(a\) 代表。

    由于 \(gcd(a,x)=gcd(x,a\%x)\) ,所以剩余类中的数和 \(x\) 的 \(gcd\) 都是一样的。这代表了只要剩余类中有一个数和 \(x\) 互质,这个剩余类中的所有数都与 \(x\) 互质。

    定义缩剩余类 是与 \(x\) 互质的数所在的剩余类。所有的缩剩余类组成缩系,一般可以从每个缩剩余类中选一个数来组成一个数列代表缩系。

    定义欧拉函数 \(\varphi(x)\) 是 \(mod\;x\) 的缩剩余类个数。

性质

建议读者仔细品味欧拉函数的两个定义,下面的证明将从这两方面思考。

  1. 对于质数 \(p\) \(\varphi(p)=p-1\) 。显然成立。
  2. 对于质数 \(p\) ,\(\varphi(p^k)=p^k-p^{k-1}\) ,\(p^k\) 只与 \(p\) 的整数倍不互质。\(p^k\) 以内 一共有 \(\frac{p^k}{p}\) 个 \(p\) 的倍数。
  3. 任意大于 \(2\) 的数 \(n\) ,\(\varphi(n)\) 是偶数。因为 \(gcd(n,x)=gcd(x,n-x)\) (不会可以在本人博客找到证明),所以与 \(n\) 互质的数都是成对出现的。
  4. 欧拉函数的积性 :(这个证法有点弱,有用 \(CRT\) 证明其通项再来证明这个的)

    对于互质的两个数 \(m\) , \(n\) ,有 \(\varphi(mn)=\varphi(m)\varphi(n)\) 。

    证明:

    将问题分成两个子问题

    设 \(x_i\) 是 \(n\) 的一个缩剩余类,\(y_i\) 是 \(m\) 的一个缩剩余类。

    1. 证明可以用 \(x_im+y_in\) 来表示 \(mn\) 的的一个缩剩余类,且不会重复。
    2. 证明 \(mn\) 的所有缩剩余类都可以用 \(x_im+y_in\) 表示。

    这样就可以证明积性

    下面来证明这些子问题:

    Ⅰ.

    \(first\) : 证明 \(x_im+y_in\) 是 \(mn\) 的的一个缩剩余类
    \[
    \because gcd(m,n)=1\\
    \begin{align}
    gcd(x_i,n)=1\implies gcd(mx_i,n)=1\implies gcd(mx_i+ny_i,n)=1 \tag{更相减损} \gcd(y_i,m)=1\implies gcd(ny_i,m)=1\implies gcd(ny_i+mx_i,m)=1\\
    \end{align}\\therefore gcd(ny_i+mx_i,mn)=1
    \]
    证毕。

    \(second\) :证明\(x_im+y_in\) 不会重复表示一个缩剩余类

    反证法:
    \[
    \bf 设 \mit x_km+y_kn \bf和\mit x_im+y_in\bf 在\varphi(mn)的同一个缩剩余类里\那么有:\mit x_km+y_kn\equiv x_im+y_in\quad(mod\;mn)\\implies
    x_km+y_kn\equiv x_im+y_in\quad(mod\;m)\\implies
    y_kn\equiv y_in\quad(mod\;m) \implies y_k=y_i\\bf 同理,x_k=x_i
    \]
    与假设矛盾,所以\(x_im+y_in\) 不会重复表示一个剩余类。

    Ⅱ.

    设 \(Z\) 是 \(mn\) 的一个缩剩余类中的元素。
    \[
    \begin{align}
    \exists\ x_0m+y_0n=1\tag{裴蜀定理}
    \end{align}\\implies Zx_0m+Zy_0n=Z\\implies
    mq+np=Z\implies \gcd(mq+np,mn)=1
    \\\implies
    \gcd(mq+np,n)=1\implies \gcd(mq,n)=1\\because \gcd(m,n)=1\quad\therefore \gcd(q,n)=1
    \]
    所以 \(q\) 是 \(n\) 的缩剩余系中的元素,同理 \(p\) 是 \(m\) 的缩剩余系中的元素。即所有的 \(mn\) 的缩剩余类都可以用\(x_im+y_in\) 表示。

  5. 欧拉函数的通向式:

    \(\varphi(m)=m(1-\frac{1}{p_1})(1-\frac{1}{p_2})\dots(1-\frac{1}{p_k})\) 其中 \(k\) 是 \(m\) 的质因子。

    证明:

    根据唯一分解定理,我们知道任意数 \(m\) 可以表示为:\(p_1^{a_1}p_2^{a_2}\dots p_k^{a_k}\)。

    由于 \(p\) 是质数, 所以\(\varphi(p_i^{a_i})=p_i^{a_i}-p_i^{a_i-1}=p_i^{a_i}(1-\frac{1}{p_i})\) (见条目 \(2.\))。而质因子的幂彼此互质,所以
    \[
    \varphi(m)=\varphi(p_1^{a_1})\varphi(p_2^{a_2})\dots \varphi(p_k^{a_k})=m(1-\frac{1}{p_1})(1-\frac{1}{p_2})\dots(1-\frac{1}{p_k})
    \]

  6. 小于 \(n\) 且与其互质的数之和为 \(\frac{\varphi(n)}{2}\times n\) 。由于 \(gcd\) 我们知道小于 \(n\) 且和 \(n\) 互质的数是成对出现的,且两两相加为 \(n\) 。于是易得。
  7. 欧拉反演(等我会了再补)

如何求欧拉函数

通项公式

欧拉定理

定义

对于互质的两数 \(a\) ,\(m\) :
\[
a^{\varphi(m)}\equiv 1\quad(mod\;m)
\]

证明

设 \(r_1,r_2,\dots,r_{\varphi(m)}\) 是 \(m\) 的缩剩余系,由于 \(a\) 和 \(m\) 互质,\(ar_1,ar_2,\dots,ar_{\varphi(m)}\) 也是 \(m\) 的缩剩余系。那么:
\[
r_1r_2\dots r_{\varphi(m)}\equiv a^{\varphi(m)}r_1r_2\dots r_{\varphi(m)}\quad(mod\;m)
\\\implies
a^{\varphi(m)} \equiv1\quad(mod\;m)
\]
可以看出, \(m\) 是质数时 \(\varphi(m)=m-1\) ,即费马小定理。

代码

直接看拓欧吧。没有欧拉的板子。

扩展欧拉定理

定义

\[
a^{b}\equiv
\begin{cases}
a^{b\%\varphi(m)}\qquad\qquad\text{gcd(a,m)=1}\a^b\qquad\qquad\qquad\; \text{gcd(a,m)}\neq1 \quad \&\quad b\leq\varphi(m)\a^{b\%\varphi(m)+\varphi(m)}\qquad\text{gcd(a,m)}\neq1\quad \&\quad b>\varphi(m)
\end{cases}
\quad(mod\ m)
\]

证明

首先,我们可以简化一下问题。

我们要证
\[
a^{b}
\equiv
a^{b\%\varphi(m)+\varphi(m)}\quad(mod\;m)
\]
将 \(a\) 质因数分解,得:
\[
a^b=p_1^{r_1}p_2^{r_2}\dots p_k^{r_k}
\]
对于与 \(m\) 互质的 \(p_i\) ,显然有 \(p_i^{b}=p_i^{b\varphi(m)+\varphi(m)}\quad (mod\;p)\) (欧拉定理)。

那么只要证明了对于和 \(m\) 不互质的 \(p_i\) 也有此性质,就有:
\[
a^b=(p_1^{r_1}p_2^{r_2}\dots p_k^{r_k})^b=(p_1^{b})^{r_1}(p_2^{b})^{r_2}\dots (p_k^{b})^{r_k}\\quad\=(p_1^{b\%\varphi(m)+\varphi(m)})^{r_1}(p_2^{b\%\varphi(m)+\varphi(m)})^{r_2}\dots (p_k^{b\%\varphi(m)+\varphi(m)})^{r_k}\\quad\=(p_1^{r_1}p_2^{r_2}\dots p_k^{r_k})^{b\%\varphi(m)+\varphi(m)}\qquad\qquad\qquad\qquad
\qquad\qquad\(mod\;m)
\]

于是问题就简化成了求 \(m\) 的一个质因子 \(p\) 满足 \(p^b\equiv p^{b\%\varphi(m)+\varphi(m)}\)

证明如下:

  1. 将 \(m\) 分解成 \(p^ks\) ,由于 \(p\) 与 \(s\) 互质。就有:

    \[
    p^{\varphi(s)}\equiv 1\quad(mod\;s)
    \]

    又因为 \(a\equiv b \quad(mod\ s)\quad\&\quad c\equiv d\quad(mod\ s)\implies ac\equiv bd\quad(mod\ s)\) (想不通为什么可以从同余定义角度思考)。

    我们可以得出 \(p^{x\times\varphi(s)}\equiv 1\quad(mod\;s)\) 。

    又因为欧拉函数是积性函数,所以 \(\varphi(s)\mid\varphi(m)\) 。

    就可以得出 \(p^{\varphi(m)}\equiv 1\equiv p^{\varphi(s)} \quad(mod\;s)\) 。

  2. 继续推:

\[
p^{\varphi(s)}\equiv1\quad(mod\;s)\iff p^{\varphi(s)}=x\times s+1\\
\implies p^{\varphi(s)+k}=x\times s\times p^k+p^k
\\ \implies p^{\varphi(s)+k}=xm+p^k\ \implies p^{\varphi(s)+k}\equiv p^k\quad(mod\;m)
\]

? 又因为 \(p^{\varphi(m)}\equiv p^{\varphi(s)} \quad(mod\;m)\) ,所以 \(p^{\varphi(m)+k}\equiv p^k\quad(mod\;m)\)。

  1. 由此可知有:
    \[
    p^b\equiv p^{b-k}p^k\equiv p^{b-k+\varphi(m)+k}\equiv p^{b+\varphi(m)}\quad(mod\;m)
    \]

    条件是 \(b\geq k\) 。

    这时又有一个推论: 对于\(m=p^qs\) ,有\(\varphi(m)\geq q\) 。

    先单独考虑质因子 \(p^q\) ,即证明\(\varphi(p^q)=p^{q-1}(p-1)\geq q\) ,当 \(p=2\) 时为 \(p^{q-1}\geq q\):

    首先 \(q=2\) 时成立。然后对于 \(q> 2\) 的情况,我们假设 \(q-1\) 时 \(2^{q-1}\geq q-1\) 成立:
    \[
    2^q=2\times 2^{q-1}\geq 2\times q-2
    \]

? 由于 \(q>2\) 所以 \(2^q\geq q\) ,当且仅当 \(q=2\) 时取等。

? 又因为 \(p^{q-1}(q-1)\) 是个增函数,\(p\) 增大时就显然成立。

? 那么就有 \(b\geq k \geq \varphi(m)\) 。即函数成立条件为 \(b\geq \varphi(m)\) 。

  1. 我们要将 \(b\) 尽量变小,即减去尽量多的 \(\varphi(m)\) 。而上面的函数可表示为:

    \(p^{x}\equiv p^{x+\varphi(m)}\quad(mod\;m)\) ,那么将 \(x-\varphi(m)\) 代入 \(x\) 就有 \(p^{x-\varphi(m)}\equiv p^x\quad(mod\;p)\) 。注意这时定义域为 \(x-\varphi(m) \geq \varphi(m)\implies x\geq 2\varphi(m)\) 。

    我们不可能一个一个地减去 \(\varphi(m)\) 最好的做法时取模,然而这样不能保证 \(x\geq 2\varphi(m)\) ,于是我们要再加上一个 \(\varphi(m)\) 。即有 \(p^b\equiv p^{b\%\varphi(m)+\varphi(m)}\quad(mod\;m) \qquad b\geq 2\varphi(m)\) 。当 \(b\) 在 \(\varphi(m)\) 和 \(2 \varphi(m)\) 之间时这么做也没有区别,我也不知道为什么要分在第三类中大概是好记

证毕

好长。

\(\bf code\)

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef int int_;
#define int long long  

char bb[20000050];
int aa,m,bbb;
int phi,ans;

int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}

void exgcd(int a,int b,int &x,int &y){
    if(b==0){
        x=1,y=0;
    }
    else{
        exgcd(b,a%b,y,x);
        y-=(a/b)*x;
    }
}

int getphi(int x){
    int ret=1;
    for(int i=2;i*i<=x && x!=1;i++){
        if(x%i != 0) continue;
        ret *=  i-1;
        x/=i;
        while(x%i==0){
            ret*=i;
            x/=i;
        }
    }
    if(x>1) ret*=x-1;
    return ret;
}

int ksm(int x,int q,int p){
    int ret=1;
    while(q>0){
        if(q&1) ret=(ret*x)%p;
        x=(x*x)%p;
        q>>=1;
    }
    return ret;
}

int_ main()
{
    bool flag=false;
    scanf("%lld %lld %s",&aa,&m,bb);
    phi=getphi(m);
    int len=strlen(bb);
    for(int i=0;i<len;i++){
        bbb=bbb*10+(int)(bb[i]-'0');
        if(bbb>=phi){
            bbb%=phi;
            flag=true;
        }
    }
    if(flag) ans=ksm(aa,bbb+phi,m);
    else ans=ksm(aa,bbb,m);
    printf("%lld",ans);
    return 0;
}

这两篇博客对我写出这篇文章帮助很大。

——\(\frak by\;thorn\_\)

原文地址:https://www.cnblogs.com/thornblog/p/11889797.html

时间: 2024-10-24 19:13:39

欧拉定理及扩展的相关文章

学习:数学----欧拉定理与扩展欧拉定理

欧拉定理和扩展欧拉定理可以解决形如5100000000000000000000等大数幂取模或者求ax mod n=1的大于1的最小x值等一类问题,其中欧拉函数占巨大的重要性,有效的将复杂的大数幂取模问题转化为简单的大数取模和快速幂问题,下面就来介绍一下基本的欧拉定理和扩展欧拉定理 1.欧拉函数的定义 欧拉函数Φ(n)指1至n以内,与n互质的数的个数 当n比较小时,可以通过从前到后遍历的方法计算Φ(n) 对于欧拉函数Φ(n),还有更简单的计算方法. 假如n可以通过分解质因子得到n的质因子p1,p2

[luogu4139]上帝与集合的正确用法【欧拉定理+扩展欧拉定理】

题目大意 让你求\(2^{2^{2^{\cdots}}}(mod)P\)的值. 前置知识 知识1:无限次幂怎么解决 让我们先来看一道全国数学竞赛的一道水题: 让你求解:\(x^{x^{x^{\cdots}}}=2\)方程的解. 对于上面的无限次幂,我们可以把这个式子移上去,得到了\(x^{2}=2\). 因为指数的原因,所以我们可以直接得到了\(x=\sqrt{2}\). 以上的问题,启示我们对于这一些无限次幂可以转移来解决. 以上的东西可能用不到 知识2:欧拉定理和扩展欧拉定理 详细请出门左拐

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何

[施工中]良心数论.

/* Copyright: xjjppm Author: xjjppm Date: 08-08-17 11:36 Description: Number Theory */ #include <map> #include <cmath> #include <cstdio> #include <cstring> #include <algorithm> inline int input() { char c=getchar();int x=0,a=

poj 1845 Sumdiv (算术基本定理求一个数因子和)

求一个数的所有因子和可以用算术基本定理,下面是它的两个重要应用: (1)一个大于1的正整数N,如果它的标准分解式为: N=(P1^a1)*(P2^a2)......(Pn^an) 那么它的正因数个数为(1+a1)(1+a2).....(1+an). (2) 它的全体正因数之和为d(N)=(1+p1+...p1^an)(1+p2+...p2^a2)...(1+pn+...+pn^an) 和求一个数正因数个数的方法类似. 可以先打表出sqrt(n)以内的所有素数(当然也可以不打表),因为n的素因数中

[BZOJ 4869][SXOI2017]相逢是问候(扩展欧拉定理+线段树)

Description Informatik verbindet dich und mich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是 输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和,也就是输出:sigma(ai),l<=i<=rai因为 这个结果可能会很大,所以你只需

[BZOJ 3884]上帝与集合的正确用法(扩展欧拉定理)

Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现,一共有四种不同的“β”. 第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合.显然,一共会有16种不同的“γ”. 如果按照这样下去,上帝创造的第四种元

fzu1759 Super A^B mod C 扩展欧拉定理降幂

扩展欧拉定理: \[ a^x \equiv a^{x\mathrm{\ mod\ }\varphi(p) + x \geq \varphi(p) ? \varphi(p) : 0}(\mathrm{\ mod\ }p)\] #include <iostream> #include <cstring> #include <cstdio> using namespace std; typedef long long ll; ll aa, cc; char bb[100000

[BZOJ4869][六省联考2017]相逢是问候(线段树+扩展欧拉定理)

4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1313  Solved: 471[Submit][Status][Discuss] Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每