首页 > 其他分享 >【数学】【模板】欧拉定理

【数学】【模板】欧拉定理

时间:2024-07-22 09:20:42浏览次数:12  
标签:pmod 定理 varphi cdots 模板 ax 互质 欧拉 equiv

欧拉定理

思想

若 \(a\) 与 \(n\) 互质,则 \(a^{\varphi(n)} \equiv 1\pmod n\);
容易得出当 \(n\) 为质数时, \(a^{n - 1}\equiv 1 \pmod n\)。

证明

假设与 \(1\sim n\) 中与 \(n\) 互质的数字为 \(x_1, x_2, x_3, \cdots x_{\varphi(n)}\),且两两不同。

现将它们全部乘以 \(a\) 得到 \(ax_1,ax_2,ax_3,\cdots,ax_{\varphi(n)}\),它们模 \(n\) 的余数一定两两不同。

利用反证法:

假设 \(ax_i \equiv ax_j\pmod n\),那么

\[\begin{aligned} ax_i-ax_j&\equiv 0\pmod n\\ a(x_i-x_j)&\equiv 0\pmod n \end{aligned} \]

因为 \(\gcd(a, n) = 1\),所以

\[\begin{aligned} x_i-x_j&\equiv 0\pmod n \end{aligned} \]

但是 \(x_i, x_j\) 都小于 \(n\) 且互不相同,不可能 \(x_i-x_j\equiv 0\pmod n\)。

所以 \(ax_1,ax_2,ax_3,\cdots,ax_{\varphi(n)}\),它们模 \(n\) 的余数一定两两不同,共有 \(\varphi(n)\) 种余数。


然后我们发现 \(ax_1,ax_2,ax_3,\cdots,ax_{\varphi(n)}\) 模 \(n\) 的余数一定与 \(n\) 互质。

利用反证法:

假设 \(ax_i\) 模上 \(n\) 的余数与 \(n\) 不互质,其公因子为 \(g\),即 \(n = gs\),余数 \(r = gp\)。

那么 \(ax_i = qn + r = q(gs)+gp = g(qs + p)\)。

而 \(n = gs\),所以 \(ax_i\) 与 \(n\) 不互质。

根据定义,\(a, x_i\) 均与 \(n\) 互质,那么 \(ax_i\) 与 \(n\) 也必须互质,所以假设不成立。

所以 \(ax_1,ax_2,ax_3,\cdots,ax_{\varphi(n)}\) 模 \(n\) 的余数一定与 \(n\) 互质。


根据上面的证明,\(ax_1,ax_2,ax_3,\cdots,ax_{\varphi(n)}\) 模 \(n\) 的余数一定两两不同,模 \(n\) 的余数一定与 \(n\) 互质,说明它们的余数正好对应 \(x_1, x_2, x_3, \cdots, x_{\varphi(n)}\),所以

\[\begin{aligned} a^{\varphi(n)}x_1x_2x_3\cdots x_{\varphi(n)} &\equiv x_1x_2x_3\cdots x_{\varphi(n)}\pmod n\\ (a^{\varphi(n)} - 1)x_1x_2x_3\cdots x_{\varphi(n)} &\equiv 0\pmod n \end{aligned} \]

因为 \(\gcd(x_1x_2x_3\cdots x_{\varphi(n)}, 1) = 1\),所以

\[\begin{aligned} a^{\varphi(n)} - 1&\equiv 0\pmod n\\ a^{\varphi(n)}&\equiv 1\pmod n \end{aligned} \]

标签:pmod,定理,varphi,cdots,模板,ax,互质,欧拉,equiv
From: https://www.cnblogs.com/Yuan-Jiawei/p/18315352

相关文章

  • 【数学】【模板】欧拉函数
    欧拉函数思想\(\varphi(n)\)表示的是\(1\simn\)中与\(n\)互质的个数。怎么求\(\varphi(n)\)呢?先将\(n\)质因数分解:\(n=p_1^{a_1}p_2^{a_2}\cdotsp_k^{a_k}\),那么\(\varphi(n)=n\left(1-\dfrac{1}{p_1}\right)\left(1-\dfrac{1}{p_2}\right)\cdots\left......
  • 【数学】【模板】欧几里得算法
    欧几里得算法思想\[\gcd(a,b)=\gcd(b,a\bmodb)\]证明\(\gcd(a,b)=\gcd(b,a\bmodb)\):首先,如果有\(d|a\),\(d|b\),那么\(d|ax+by\)。然后,\(a\bmodb=a-\left\lfloor\dfrac{a}{b}\right\rfloorb\)。假设\(p=\gcd(a,b)\),那么\(p|......
  • 【搜索】【模板】A* 算法
    学了IDA*,然后学学A*。A*A*可以简单理解为在bfs的时候分个先后,哪个最有可能先到达就先走哪一步。A*是在某个最短路问题中(比如求最小的步骤等),如果所有边权都是非负的,那么就可以使用启发函数来优化bfs过程。例题P1379八数码难题思路我们在bfs的过程中加入函数\(h......
  • 【数据结构】【模板】莫队
    莫队使用场景离线算法;区间询问不断修改。能用\(O(1)\)的时间复杂度从\([l,r]\)到\([l+1,r]\)或者\([l,r-1]\)。原理原问题可以转化为为建立一个坐标轴,对于一个询问\((l,r)\),相当于点\((l,r)\),从一个询问\((a,b)\)到\((c,d)\),可以理解为点\((a,b)......
  • 【图论】【模板】差分约束系统
    差分约束系统差分约束系统是将不等式组的问题转化为图论问题。前置知识判断负环例题P5960【模板】差分约束算法思路我们将\(x_u-x_v\ley_u\)换为\(x_u\lex_v+y_u\)。然后我们建立一条连接\(v,u\)(注意是\(v,u\)不是\(u,v\))权值为\(y_u\)的边。我们发......
  • 【图论】【模板】最长路、最短路
    最短路Dijkstra算法思路Dijkstra算法,采用贪心思想,在某一时刻如果\(dis\)数组中\(dis_u\)最小,那么就固定\(u\),\(dis_u\)一定是\(1\rightarrowu\)的最短路径,然后我们再通过\(u\)更新与\(u\)有边相连的\(v\),如果\(dis_v>dis_u+w\),那么\(dis_v=dis_u+w\)......
  • 【图论】【模板】判断负环
    使用SPFA算法判断负环前言判断负环是属于判定性的问题,常与二分结合起来。例题AcWing852.spfa判断负环思路可以使用SPFA进行判断。因为两点之间至多有\(n-1\)条边,所以当一个点的最短路径经过的边数大于等于\(n\)时,说明有负环。代码#include<bits/stdc++.h>......
  • 【搜索】【模板】模拟退火
    前置知识自然对数、分数次幂、概率。前言模拟退火可以在我们想不到题目正解的时候试一试其实就是骗分方法。因为纯随机得出正确答案的概率非常低,所以我们就可以加一定的优化,使找到答案概率增大。算法思想温度(步长):每次选择一个范围进行搜索,在搜索过程中范围不断缩小,最后到很......
  • 欧拉图、欧拉路径、欧拉回路
    P7771【模板】欧拉路径欧拉路径的模板题。思路首先判断是否有欧拉路径,然后排序,找出起点,最后dfs找路径。代码细节多,比如要判断一个点是否存在(这个题目不需要)。#include<bits/stdc++.h>usingnamespacestd;constintN=100010;vector<int>e[N];inthead[N],in......
  • 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当
    /定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数。例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。/#include<stdio.......