欧拉定理 和 欧拉函数

来源:互联网 发布:mysql数据库常用语句 编辑:程序博客网 时间:2024/04/29 21:40

欧拉定理

定义

设m >= 2, (a, m) = 1。 若ϕ(m)表示小于m且与m互素的正整数的个数,则有

aϕ(m)1(modm)

//m不一定为素数
//若m为素数,则ϕ(m)=m1, 上式变为费马小定理,即
am11(modm)

证明

欧拉定理的证明与费马小定理的证明类似,需要以下引理:

引理1 若(a,m)=1,r1,r2,,rϕ(m)是小于m且与m互素的正整数,则

ar1,ar2,,arϕ(m)

的最小剩余(mod m)是
r1,r2,,rϕ(m)

的一排列。
//此引理的证明使用反证法即可。

下证欧拉定理

由引理1可得

r1r2rϕ(m)(ar1)(ar2)arϕ(m)(modm)

r1r2rϕ(m)aϕ(m)(r1r2rϕ(m))(modm)

由于r1,r2,,rϕ(m)每一个都与m互素,所以可消去,得
1aϕ(m)(modm)

得证。

欧拉函数

定义

上面所提及的ϕ(m)即为欧拉函数, 表示小于m且与m互素的正整数的个数且有以下计算公式:

若n的素幂分解式为n=pe11pe22pekk,则有

ϕ(n)=n(11p1)(11p2)(11pk)

另一种形式为
ϕ(n)=pe111(p11)pe212(p21)pek1k(pk1)

显然二者是等价的。

证明

由积性函数的性质得。
证明所需要引理:

引理2 对一切正整数n, 有ϕ(pn)=pn1(p1)
引理3 若r1,r2,,rϕ(m)的最小剩余(mod m)是0,1,2,,m1的一个排列, 则r1,r2,,rϕ(m)中恰有ϕ(m)个元素与m互素。

引理3可证ϕ(m)为积性函数,而积性函数具有以下性质:

f是一个积性函数, n的素幂分解式为n=pe11pe22pekk,则

f(n)=f(pe11)f(pe22)f(pekk)

再由引理2求得的素数幂项,即可求得正整数范围内的ϕ(n)

实现

//欧拉函数 -- 单个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

原创粉丝点击