欧拉定理

欧拉定理及扩展(附超易懂证明)

烈酒焚心 提交于 2019-11-27 06:12:55
欧拉定理 若 \(\gcd(a,m)=1\) ,则满足 \(a^{\varphi (m)} \equiv 1 \pmod m\) 证明 设 \([1,m)\) 内与 \(m\) 互质的数为数列 \(\{b_n\}=\{b_1,b_2,b_3,\cdots,b_{\varphi (m)}\}\) 因为 \(a,m\) 互质且 \(b_i,m\) 互质,所以数列 \(\{A_n\}=\{ab_1,ab_2,ab_3,\cdots,ab_{\varphi(m)}\}\) 中每个数都与 \(m\) 互质,且两两不同。 同时,由 \(\gcd(ab_i,m)=1\) 可得 \(\gcd(ab_i \bmod m,m)=1\) ,即每个 \(A_i\) 除以 \(m\) 的余数都与 \(m\) 互质,且余数两两不同。 可以用反证法推出“余数两两不同”。假设存在 \(ab_i \equiv ab_j \pmod m\) ,那么 \(ab_i-ab_j=km\ (k \in \mathbb{Z})\) ,即 \(a(b_i-b_j)=km\) 。由于 \(a\) 与 \(m\) 互质,那么只能是 \(m \mid (b_i-b_j)\) ,即 \(b_i \equiv b_j \pmod m\) 。这与 \(1 \leq b_i,b_j < m\) 且 \(b_i \neq b_j\)

【数学 扩展欧拉定理】luogu_4139 上帝与集合的正确用法

人盡茶涼 提交于 2019-11-27 02:40:27
题意 求 2 2 2... m o d p 2^{2^{2...}}\ mod\ p 2 2 2 . . . m o d p 思路 设 f ( p ) = 2 2 2... m o d p f(p)=2^{2^{2...}}\ mod\ p f ( p ) = 2 2 2 . . . m o d p 根据欧拉定理的推论, a b m o d p = a b % φ ( p ) + φ ( p ) m o d p , ( b > φ ( p ) ) a^b\ mod\ p=a^{b\% \varphi(p)+\varphi(p)}\ mod\ p,(b>\varphi(p)) a b m o d p = a b % φ ( p ) + φ ( p ) m o d p , ( b > φ ( p ) ) 所以 2 2 2.. m o d p = 2 f ( φ ( p ) ) + φ ( p ) m o d p 2^{2^{2..}}\ mod\ p=2^{f(\varphi(p))+\varphi(p)}\ mod \ p 2 2 2 . . m o d p = 2 f ( φ ( p ) ) + φ ( p ) m o d p 递归即可。 代码 # include <cstdio> int t , p ; int phi [ 10000001 ] ; int power ( int

洛谷 P5091 【模板】欧拉定理

和自甴很熟 提交于 2019-11-26 12:51:28
题目 题目描述 给你三个正整数, a,m,b a , m , b,你需要求: a^b \bmod m a b mod m 输入格式 一行三个整数, a,m,b a , m , b 输出格式 一个整数表示答案 输入输出样例 输入 #1 复制 2 7 4 输出 #1 复制 2 输入 #2 复制 998244353 12345 98765472103312450233333333333 输出 #2 复制 5333 说明/提示 注意输入格式, a,m,b a , m , b 依次代表的是底数、模数和次数 样例1解释: 2^4 \bmod 7 = 2 2 4 mod 7 = 2 输出 2 数据范围: 对于全部数据: 1≤a≤10^9 1 ≤ a ≤ 1 0 9 1≤b≤10^{20000000} 1 ≤ b ≤ 1 0 2 0 0 0 0 0 0 0 1≤m≤10^6 1 ≤ m ≤ 1 0 6 分析 首先,我们需要知道欧拉定理,扩展欧拉定理 欧拉定理 a φ ( m ) ≡ 1 mod m 扩展欧拉定理 b ≥ φ ( m ) 时 , a^ b ≡ a^ ( b mod φ ( m ) ) + φ ( m ) mod m 那我们来证明下欧拉定理 定义一个n= φ ( m ) 设x1,x2,x3...xn是小于m与m互质的数 然后我们再设k为与m互质的数 gcd(k,m)=1

【POJ3696】The Luckiest Number-欧拉定理+快速幂

青春壹個敷衍的年華 提交于 2019-11-26 03:22:49
测试地址: The Luckiest Number 题目大意: 给出一个正整数 L ( ≤ 2 , 000 , 000 , 000 ) //--> ,要使正整数 888...8        K 位 //--> 能整除 L //--> ,求最小的 K //--> ,如果不存在这样的 K //--> 则输出0。 做法: 这题的思路很神……没看题解的时候根本不知道怎么做,调也调了好一会,我好弱啊…… 这一题需要使用欧拉定理+快速幂来解决。 我们发现 999...9        K 位 //--> 可以表示为 10 K − 1 //--> ,所以 888...8        K 位 //--> 可以表示为 8 / 9 × ( 10 K − 1 ) //--> ,那么存在一个整数 p //--> 使得 8 / 9 × ( 10 K − 1 ) = L × p //--> ,所以 10 K − 1 = 9 / 8 × L × p //--> 。由于等式右边要是整数,那么 p //--> 应该满足 8 | ( L × p ) //--> 。因为 L //--> 已经包含 gcd ( L , 8 ) //--> 这些因子,所以 p //--> 需要包含 8 / gcd ( L , 8 ) //--> 这些因子,所以可以将 p //--> 写成