欧拉定理 和 欧拉函数
来源:互联网 发布:mysql数据库常用语句 编辑:程序博客网 时间:2024/04/29 21:40
欧拉定理
定义
设m >= 2, (a, m) = 1。 若
ϕ(m) 表示小于m且与m互素的正整数的个数,则有aϕ(m)≡1(modm)
//m不一定为素数
//若m为素数,则ϕ(m)=m−1 , 上式变为费马小定理,即am−1≡1(modm)
证明
欧拉定理的证明与费马小定理的证明类似,需要以下引理:
引理1 若
(a,m)=1,r1,r2,⋯,rϕ(m) 是小于m且与m互素的正整数,则ar1,ar2,⋯,arϕ(m)
的最小剩余(mod m)是r1,r2,⋯,rϕ(m)
的一排列。
//此引理的证明使用反证法即可。
下证欧拉定理
由引理1可得
r1∗r2∗⋯∗rϕ(m)≡(ar1)∗(ar2)∗⋯∗arϕ(m)(modm)
即r1∗r2∗⋯∗rϕ(m)≡aϕ(m)∗(r1∗r2∗⋯∗rϕ(m))(modm)
由于r1,r2,⋯,rϕ(m) 每一个都与m互素,所以可消去,得1≡aϕ(m)(modm)
得证。
欧拉函数
定义
上面所提及的
若n的素幂分解式为
n=pe11pe22⋯pekk ,则有ϕ(n)=n(1−1p1)(1−1p2)⋯(1−1pk)
另一种形式为ϕ(n)=pe1−11(p1−1)pe2−12(p2−1)⋯pek−1k(pk−1)
显然二者是等价的。
证明
由积性函数的性质得。
证明所需要引理:
引理2 对一切正整数n, 有
ϕ(pn)=pn−1(p−1) 。
引理3 若r1,r2,⋯,rϕ(m) 的最小剩余(mod m)是0,1,2,⋯,m−1 的一个排列, 则r1,r2,⋯,rϕ(m) 中恰有ϕ(m) 个元素与m互素。
引理3可证
若
f 是一个积性函数, n的素幂分解式为n=pe11pe22⋯pekk ,则f(n)=f(pe11)f(pe22)⋯f(pekk)
再由引理2求得的素数幂项,即可求得正整数范围内的
实现
//欧拉函数 -- 单个int Euler(int x) { int ans = x, m = (int)sqrt(x*1.0)+1; for(int i = 2; i < m; ++i) if(x%i == 0) { ans = ans / i * (i-1); while(x%i == 0) x /= i; } if(x > 1) ans = ans / x * (x-1); return ans;}//欧拉函数 -- 递推求[1, n]的欧拉函数值phi[i]void PhiTable(int n, int* phi) { for(int i = 1; i <= n; ++i) phi[i] = i; for(int i = 2; i <= n; i += 2) phi[i] /= 2; for(int i = 3; i <= n; i += 2) if(phi[i] == i) { //i是质数 for(int j = i; j <= n; j += i) { phi[j] = phi[j] / i * (i-1); //i是j的一个因子 } }}
应用
降幂**
如果模不为素数,就不能用费马小定理降幂,所以要用欧拉定理降幂。降幂公式如下:
anmodp=anmodϕ(p)+ϕ(p)modp,n>ϕ(p)
//n<ϕ(p) 的时候不用降幂。
//注意此时p不一定为素数
//而且a和p也不一定互素。所以此式又称广义欧拉定理。
例题
上帝与集合的正确用法 HYSBZ - 3884
Super A^B mod C FZU - 1759
Calculation HDU - 2837
Colossal Fibonacci Numbers! UVA - 11582
Mathematician QSC HDU - 5895
还可以求有关阶,原根,指数相关的问题。
有些题目需要转化为带有欧拉函数的公式。
补一个推论
若n>= 1,则
∑d|nϕ(d)=n
- 欧拉函数和欧拉定理
- 欧拉定理 和 欧拉函数
- 费马小定理和排列组合 欧拉函数
- 欧拉函数与欧拉定理
- 欧拉函数与欧拉定理
- 欧拉函数&&欧拉定理
- 欧拉定理,欧拉函数
- 欧拉函数与欧拉定理
- 欧拉函数/欧拉定理
- 欧拉函数,欧拉定理模板
- POJ3696【欧拉函数+欧拉定理】
- 欧拉函数与欧拉定理
- 欧拉函数与欧拉定理
- 欧拉函数与欧拉定理
- 欧拉定理、费马小定理和扩展欧拉定理
- 欧拉函数及定理
- 欧拉定理与函数
- 欧拉函数、欧拉定理、费马小定理
- 时间复杂度
- 终点即起点
- node的包管理器----npm的使用
- 威尔逊定理:素数的充要条件
- 网络编程中的IO复用
- 欧拉定理 和 欧拉函数
- HBase架构
- C++11 Future
- FZOJ 2233
- 2017 Multi-University Training Contest
- AIDL的使用情况和实例介绍
- 阶 和 原根
- PAT --- 1005. 继续(3n+1)猜想 (25)
- 常用 Git 命令清单