1. 程式人生 > >關於尤拉函式的遞推方法的證明

關於尤拉函式的遞推方法的證明

首先什麼是尤拉函式呢?

尤拉函式phi(n)就表示1-n中與n互質的數的個數

設Xi為1-n中與n互質的數(一共有phi(n)個)

那麼我們可以知道phi(2) = 1 , phi(3) = 2.......,我們也可以通過如下的遞推式獲得更大的尤拉函式的值

對於任意一個能被n整除的質數,有m = n/p

當m%p == 0 的時候,phi(n) = phi(m)*p

當m%p != 0的時候,phi(n) = phi(m)*(p-1)

下面給出一種證明方法:

-------------------------------------------尤拉函式的推導式的推導和證明-----------------------------------------------------

1)由質因數分解定理得,在n中至少能夠分解出一個素數p,導致 n = p*m,那麼可以將1~n劃分為一個區間的集合{ [m*(i-1) , m*i ] , 1<=i<=p },則對於每個區間[m*(i-1)+1,m*i],其中的每個數可以看做m*(i-1)+j (1<=j<=m)。

2)所以gcd ( m*(i-1)+j , m ) 

= gcd ( m , (m*(i-1)+j)%m ) (根據秦九韶輾轉相除法)

=gcd ( m , j )

那麼也就是每個區間對應位置的數均與1~m中的某個數gcd相同,互質便是gcd(a,b)==1,所以1~n中與m互質的數有p*phi(m)個。

3)那麼我們接下來進行分類討論:

若m%p == 0 , 那麼 m = a*p(a為一個正整數),所以若gcd(b,m) == 1 ,那麼 gcd ( b , p ) == 1 , 所以 gcd ( m*p , b ) == 1 , 即gcd ( n , b ) == 1 ,所以在這種情況與m互質的數均與n互質,所以phi(n) = phi(m)*p;

若m%p != 0 , 那麼若gcd ( b , m) == 1 , gcd ( b , p ) == p , 那麼 gcd ( n , b ) == p,所以1~m與m互質的數為q,若m%p != 0 , 那麼與m互質且與p不互質的數是q*p,因此在n當中這樣的數有phi(m)個,所以 phi(n) = phi(m)*p - phi(m)