歐拉函數的推導

歐拉函數的定義:phi(n)表示在1~n中與n互質的數

  難點:

    & 與平常的遞推唯一不同的是:遞推不是由(n-1)推來,這給想出推理過程帶來了麻煩

    & 如何充分使用互質這個概念,不像其他遞推能夠容易的列出遞推關係

  分析:

    &對互質的挖掘:

           &  兩個數的最大公約數(a,b)爲 1  ( (a,b)表示a,b的最大公約數)

           &  對構成b的所有素因子,a都不能整除它們

                 由這裏可以得到一個很顯然的推論:如果構成a,b的素因子集合相同,那麼任意的一個數與a,b的關係是: 同時與其互質或者同時不與其互質

    & 上面經常出現的字眼“素因子”,是否在提示我們遞推式與素因子有關呢?

                  假設:  n=p*m     (p 爲素數)

                  提示我們:phi(n),phi(m)是否存在遞推式呢?

                  答案是肯定的:

                 (1)1~n中與m互質的數目與phi(m)有什麼關係呢?

                           將1~n 可以分成p份: (1,m) , (m+1,2m),……( (p-1)*m,p*m )

                          爲何這樣分呢? 你將發現 每份中與m互質的數目是相同的

                          因爲 如果 (b,m)=1,那麼(b+t*m,m)=1( b+t*m 無法整除m中任意素因子,模運算的分配率)

                  (2) 現在考慮一個問題:(b,m)=1,那麼(b,n)=1麼?

                            從剛剛的互質出發:  如果構成m的素因子集合包含p,那麼構成n,m的素因子集合是相同的,

                            因此上式成立,否則當b能整除p時,上面顯然不成立(存在公有素因子p)。故:

                             m%p=0時   :phi(n)=phi(m)*p(一共有p份)

                             m%p!=0時:phi(n)=phi(m)*p-{與m互質但是p的倍數的數}

                             {與m互質但是p的倍數的數}=phi(m)(p,2*p,3*p,……,m*p中選取,等效1~m求與m互質的數目)

                             這phi(n)=phi(m)*(p-1)

                   最終得到遞推式:

                       m%p=0時   :phi(n)=phi(m)*p

                       m%p!=0時:phi(n)=phi(m)*(p-1)

                   遞推求出通項公式:

                           phi(n)=∏  pi^(ki-1)*(pi-1)  ({pi}爲n的所有素因子)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章