【算法】欧拉函数公式证明

定义

欧拉函数 φ ( n ) \varphi(n) φ(n)表示小于等于 n n n且与 n n n互质 ( g c d ( x , n ) = 1 ) (gcd(x,n)=1) (gcd(x,n)=1)的数的个数

公式

φ ( n ) = n × ( ∏ p i ∣ m , p i 是 质 数 p i − 1 p i ) \varphi(n)=n\times (\prod\limits_{p_i|m,p_i是质数}\frac{p_i-1}{p_i}) φ(n)=n×(pim,pipipi1)

推导

一些显而易见或者易证明的性质

  1. φ ( p ) = p − 1 , p 是 质 数 \varphi(p)=p-1,p是质数 φ(p)=p1,p
  2. φ ( p q ) = φ ( p ) × φ ( q ) = ( p − 1 ) × ( q − 1 ) , p , q 均 是 质 数 \varphi(pq)=\varphi(p)\times \varphi(q)=(p-1)\times(q-1),p,q均是质数 φ(pq)=φ(p)×φ(q)=(p1)×(q1),p,q
    a. 直观理解, [ 1 , p q ] [1,pq] [1,pq]内与 p q pq pq互质的数等于 [ 1 , p ] [1,p] [1,p]内与 p p p互质的数以及 [ 1 , q ] [1,q] [1,q]内与 q q q互质的数乘积
    b. 从积性函数方向理解,欧拉函数是积性函数,所以有 φ ( p q ) = φ ( p ) × φ ( q ) \varphi(pq)=\varphi(p)\times\varphi(q) φ(pq)=φ(p)×φ(q)
  3. n n n分解质因子, n = p 1 k 1 p 2 k 2 … p m k m = ∏ i = 1 m p i k i n=p_1^{k_1}p_2^{k_2}\dots p_m^{k_m}=\prod\limits_{i=1}^{m}p_i^{k_i} n=p1k1p2k2pmkm=i=1mpiki,其中 p i p_i pi两两互质,所以 p i k i p_i^{k_i} piki两两互质
    a. 直观理解, [ 1 , n ] [1,n] [1,n]内与 n n n互质的数所有 [ 1 , p i k i ] [1,p_i^{k_i}] [1,piki]内与 p i k i p_i^{k_i} piki互质的数的乘积
    b. 从积性函数方向理解, φ ( n ) = ∏ i = 1 m φ ( p i k i ) \varphi(n)=\prod\limits_{i=1}^{m}\varphi(p_i^{k_i}) φ(n)=i=1mφ(piki)
  4. φ ( p k ) = ( p − 1 ) ( p k − 1 ) \varphi(p^k)=(p-1)(p^{k-1}) φ(pk)=(p1)(pk1)
    a. 因为 [ 1 , p k ] [1,p^k] [1,pk]内与 p p p不互质的数为 1 × p , 2 × p , … , ( p k − 1 ) × p 1\times p, 2\times p, \dots, (p^{k-1}) \times p 1×p,2×p,,(pk1)×p,共 p k − 1 p^{k-1} pk1
    b. 那么 [ 1 , p k ] [1,p^k] [1,pk]内与 p p p互质的数有 p k − p k − 1 = ( p − 1 ) × ( p k − 1 ) p^k-p^{k-1}=(p-1)\times (p^{k-1}) pkpk1=(p1)×(pk1)

欧拉函数公式证明

对于一个正整数 n n n

由性质 3 3 3,对 n n n分解质因子, n = p 1 k 1 p 2 k 2 … p m k m = ∏ i = 1 m p i k i n=p_1^{k_1}p_2^{k_2}\dots p_m^{k_m}=\prod\limits_{i=1}^{m}p_i^{k_i} n=p1k1p2k2pmkm=i=1mpiki

由性质 4 4 4
φ ( n ) = ∏ i = 1 m φ ( p i k i ) = ∏ i = 1 m ( p i − 1 ) ( p i k i − 1 ) = ∏ i = 1 m p i − 1 p i p i k i = ( ∏ i = 1 m p i k i ) × ( ∏ i = 1 m p i − 1 p i ) = n × ( ∏ i = 1 m p i − 1 p i ) \varphi(n)=\prod\limits_{i=1}^{m}\varphi(p_i^{k_i})\\ =\prod\limits_{i=1}^{m}(p_i-1)(p_i^{k_i-1})\\ =\prod\limits_{i=1}^{m}\frac{p_i-1}{p_i}p_i^{k_i}\\=(\prod\limits_{i=1}^{m}p_i^{k_i})\times(\prod\limits_{i=1}^{m}\frac{p_i-1}{p_i})\\=n\times (\prod\limits_{i=1}^{m}\frac{p_i-1}{p_i}) φ(n)=i=1mφ(piki)=i=1m(pi1)(piki1)=i=1mpipi1piki=(i=1mpiki)×(i=1mpipi1)=n×(i=1mpipi1)

φ ( n ) = n × ( ∏ i = 1 m p i − 1 p i ) \varphi(n)=n\times (\prod\limits_{i=1}^{m}\frac{p_i-1}{p_i}) φ(n)=n×(i=1mpipi1),得证

你可能感兴趣的:(算法竞赛,算法,欧拉函数,推导,证明)