尤拉函式證明

2022-07-21 02:57:16 字數 3057 閱讀 2328

**於:  ,

請思考以下問題:

任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?(比如,在1到8之中,有多少個數與8構成互質關係?)

計算這個值的方法就叫做尤拉函式,以φ(n)表示。在1到8之中,與8形成互質關係的是1、3、5、7,所以 φ(n) = 4。

φ(n) 的計算方法並不複雜,但是為了得到最後那個公式,需要一步步討論。

第一種情況

如果n=1,則 φ(1) = 1 。因為1與任何數(包括自身)都構成互質關係。

第二種情況

如果n是質數,則 φ(n)=n-1 。因為質數與小於它的每乙個數,都構成互質關係。比如5與1、2、3、4都構成互質關係。

第三種情況

如果n是質數的某乙個次方,即 n = p^k (p為質數,k為大於等於1的整數),則

比如 φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4。

這是因為只有當乙個數不包含質數p,才可能與n互質。而包含質數p的數一共有p^(k-1)個,即1×p、2×p、3×p、...、p^(k-1)×p,把它們去除,剩下的就是與n互質的數。

上面的式子還可以寫成下面的形式:

可以看出,上面的第二種情況是 k=1 時的特例。

第四種情況

如果n可以分解成兩個互質的整數之積,

n = p1 × p2

φ(n) = φ(p1p2) = φ(p1)φ(p2)

即積的尤拉函式等於各個因子的尤拉函式之積。比如,φ(56)=φ(8×7)=φ(8)×φ(7)=4×6=24。

對於素數p, φ(p)=p-1,對於對兩個素數p,q φ(pq)=pq-1

尤拉函式是積性函式,但不是完全積性函式.

函式的積性即:若m,n互質,則φ(mn)=φ(m)φ(n).由「m,n互質」可知m,n無公因數,所以φ(m)φ(n)=m(1-1/p1)(1-1/p2)(1-1/p3)…(1-1/pn)·n(1-1/p1')(1-1/p2')(1-1/p3')…(1-1/pn'),其中p1,p2,p3...pn為m的質因數,p1',p2',p3'...pn'為n的質因數,而m,n無公因數,所以p1,p2,p3...pn,p1',p2',p3'...pn'互不相同,所以p1,p2,p3...pn,p1',p2',p3'...pn'均為mn的質因數且為mn質因數的全集,所以φ(mn)=mn(1-1/p1)(1-1/p2)(1-1/p3)…(1-1/pn)(1-1/p1')(1-1/p2')(1-1/p3')…(1-1/pn'),所以φ(mn)=φ(m)φ(n).

?這一條的證明要用到"中國剩餘定理",這裡就不展開了,只簡單說一下思路:如果a與p1互質(a第五種情況

因為任意乙個大於1的正整數,都可以寫成一系列質數的積。

根據第4條的結論,得到

再根據第3條的結論,得到

也就等於

這就是尤拉函式的通用計算公式。比如,1323的尤拉函式,計算過程如下:

即φ(mn)=φ(n)*φ(m)只在(n,m)=1時成立.

對於乙個正整數n的素數冪分解n=p1^q1*p2^q2*...*pn^qn.

φ(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pn).

除了n=2,φ(n)都是偶數.

設n為正整數,∑φ(d)=n (d|n).

根據性質2,我們可以在o(sqrt(n))的時間內求出乙個數的尤拉函式值.

如果我們要求1000000以內所有數的尤拉函式,怎麼辦.

上面的方法複雜度將高達o(n*sqrt(n)).

我們來看看線性篩法的程式:

[cpp] view plain

copy

//直接求解尤拉函式  

int euler(int n)  

}  if(a>1) res=res/a*(a-1);  

return res;  

}  它在o(n)的時間內遍歷了所有的數,並且有很多的附加資訊,

那麼我們是不是能在篩素數的同時求出所有數的尤拉函式呢.

答案是可以.

φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk),其中p1、p2…pk為n的所有素因子。

比如:φ(12)=12*(1-1/2)(1-1/3)=4。

利用這個就比較好求了,可以用類似求素數的篩法。

先篩出n以內的所有素數,再以素數篩每個數的φ值。

比如求10以內所有數的φ值:

設一陣列phi[11],賦初值phi[1]=1,phi[2]=2...phi[10]=10;

然後從2開始迴圈,把2的倍數的φ值*(1-1/2),則phi[2]=2*1/2=1,phi[4]=4*1/2=2,phi[6]=6*1/2=3....;

再是3,3的倍數的φ值*(1-1/3),則phi[3]=3*2/3=2,phi[6]=3*2/3=2,phi[9]=.....;

再5,再7...因為對每個素數都進行如此操作,因此任何乙個n都得到了φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk)的運算

覺得這個「篩」還是比較好用的,以前求數的所有因子之和也是用的它。

我們知道,乙個數k能分解成p1^(q1)*p2^(q2)...

那麼,這個數的因子個數就是(1+q1)*(1+q2)*...*(1+qk)

**如下:

[cpp]view plain

copy

"font-size:18px;">"font-size:18px;">void init()  

尤拉函式及其證明

請思考以下問題 任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?比如,在1到8之中,有多少個數與8構成互質關係?計算這個值的方法就叫做尤拉函式,以 n 表示。在1到8之中,與8形成互質關係的是1 3 5 7,所以 n 4。n 的計算方法並不複雜,但是為了得到最後那個公式,需...

尤拉函式及其證明

請思考以下問題 任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?比如,在1到8之中,有多少個數與8構成互質關係?計算這個值的方法就叫做尤拉函式,以 n 表示。在1到8之中,與8形成互質關係的是1 3 5 7,所以 n 4。n 的計算方法並不複雜,但是為了得到最後那個公式,需...

尤拉函式及其證明

請思考以下問題 任意給定正整數n,請問在小於等於n的正整數之中,有多少個與n構成互質關係?比如,在1到8之中,有多少個數與8構成互質關係?計算這個值的方法就叫做尤拉函式,以 n 表示。在1到8之中,與8形成互質關係的是1 3 5 7,所以 n 4。n 的計算方法並不複雜,但是為了得到最後那個公式,需...