浅谈欧拉函数的证明及其性质

欧拉函数简介:

在数论中,对于正整数n,欧拉函数是小于n的正整数(1 <= n )中与n互质的数的数目(特殊的 : φ(1)=1)。此函数以其首名研究者欧拉命名(Euler's totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。

欧拉函数:

根据唯一分解定理可知,对于任意正整数 N 都可以拆分成若质数相乘的形式  如:N = p1 ^ q1  *  p2 ^ q2   * ······pn ^ qn
(实例: 12 = 2 ^ 2  *  3 ^ 1 )


欧拉函数:

φ(N) = N * (1 - 1 / p1) * (1 - 1 / p2) * ······ * (1 - 1 / pn).
这里的p1,p2,都是其质因数,如 φ(12) = 12 *  (1 - 1 / 2) * (1 - 1 / 3) = 4  (对于1 - 12 之间与12互质的数为:1, 5, 7, 11 ).

欧拉函数的通俗证明:

拿12举例子吧,12有两种质因子(2 和 3),[1, 12]中有 \small \frac{1}{2} 的是是2的倍数,所以有(1 - \small \frac{1}{2})的不是2的倍数(1,3,5,7,9,11),在这不是2的倍数的6个数种有 \small \frac{1}{3} 的数是3的倍数(3,9),所以有(1 - \small \frac{1}{3})的数不是3的倍数。所以既不是2的倍数,也不是3的倍数的数的个数为:12 * (1 - \small \frac{1}{2}) * (1 - \small \frac{1}{3}) = 4  (4个数为 :1, 5,7,11)。这类似于素数筛,但这里是把是N的质因子的倍数的数都去除,剩下的就是与N互质的了。(由于算的是其质因子的倍数,所以是“均匀分布”的,意思是说 2 是其质因子 那么[1, N]就有 \small \frac{1}{2} 个数是2的倍数,其他质因子同理)

欧拉函数的性质:

性质1:若N是质数,那么φ(N) = N - 1

证明:由于N是质数,所以φ(N) = N * (1 - \small \frac{1}{N}) = N - 1

性质2:设p为质数,N = p^k,φ(N) = p^k - p^(k - 1)

证明:φ(N) = N * (1 - \small \frac{1}{p}) = p^k * (1 - \small \frac{1}{p}) =  p^k - p^(k - 1) 

性质3:欧拉函数是积性函数

首先说下什么是积性函数

积  性   函  数:若m, n互质且满足f(m * n) = f(m) * f(n) 时,f 是积性函数
完全积性函数:若对任意正整数 f(m * n) = f(m) * f(n) 都成立时,f 是完全积性函数

φ(m * n) = m * n * (1 -  \small \frac{1}{n}) * (1 -  \small \frac{1}{m})  =  m * (1 -  \small \frac{1}{m})  *  n * (1 - \small \frac{1}{n}) = φ(n) * φ(m)   (n 与 m 互质)

且当:m = 2 && n 是奇数时,φ(2 * n)  =  2 * n * (1 - \small \frac{1}{2}) * X = n * X  = φ(n)

性质4:当 N > 2 时,φ( N )是偶数

证明:

有个基本结论:gcd(n, m) == 1  所以 gcd(n, n - m) == 1  (n > m)

先证明该基本结论:

假设 gcd(n, n - m) = k
所以可令:
n = a * k         ······ ① 
n - m = b * k   ······ ②
① - ②:m = (a - b) * k
所以 gcd(n, m) = gcd(a*k, (a - b)*k) 
又因为 gcd(n, m) = 1  所以 k = 1

所以每一个对n互质的数都对应一个n - m与之互质,所以φ( N )是偶数

 

性质5:在区间 [1 ,  N] 中与N互质的数的总和为:φ ( N )  *  N  /  2  ( N > 1)

证明:

由上面证明知:gcd(n, m) == 1  所以 gcd(n, n - m) == 1  (n > m)

与n互质的一个数为m,所以另一个与n互质的数应该为 n - m,所以与n互质的平均数是 n / 2 ,所以总和为:φ ( N )  *  N  /  2 且 ( N > 1)

欧拉函数代码:

/***********  n 的phi值 ******************/
//时间复杂度为:sqrt(n)
int phi(int n)
{
    int ans = n;
    for(int i = 2; i * i <= n; i++){
        if(n % i == 0){  //i是其质因数
            ans = ans / i * (i - 1);  //先除后乘,防止溢出
            while(n % i == 0) n /= i;
        }
    }
    if(n > 1) ans = ans / n * (n - 1);
    return ans;
}


/*********** 1 - n 每个数的phi值 ******************/
//基本类似于素数筛,时间复杂度为:nloglogn
int phi[MAXN];
void phi_table(int n)
{
    memset(phi, 0, sizeof(phi));
    phi[1] = 1;
    for(int i = 2; i <= n; i++){
        if(!phi[i]){
            //这里完全相同于素数筛,phi[i]如果为0,那么i是质数
            for(int j = i; j <= n; j += i)
            {
                if(!phi[j]) phi[j] = j; //为了下一行代码,让phi[j]有值
                phi[j] = phi[j] / i * (i - 1);
                // i是j的一个质因子,所以先把这个质因子带入欧拉函数算了,之后再有就再算了
            }
        }
    }
}

欧拉定理:

a^{^{\varphi\left ( m \right )}} \equiv 1\: (mod\: m)  

证明可参照:https://www.cnblogs.com/wangxiaodai/p/9758242.html

费马小定理:

当a与m互质时,通过欧拉定理可得: a^{^{ \left ( m - 1 \right )}} = 1\; (mod\; m ) 

逆元:

a^{^{ \left ( m - 1 \right )}} = 1\; (mod\; m )

a\times a^{^{ \left ( m - 2 \right )}} = 1\; (mod\; m )

所以a的逆元是:a^{^{ \left ( m - 2 \right )}} ,当m与a互质时。

 

 

 

 

你可能感兴趣的:(ACM,数学)