尤拉函式在oi中是個非常重要的東西,不知道的話會吃大虧的.
尤拉函式用希臘字母φ表示,φ(n)表示n的尤拉函式.
對φ(n)的值,我們可以通俗地理解為小於n且與n互質的數的個數(包含1).
尤拉函式的一些性質:
1.對於素數p, φ(p)=p-1,對於對兩個素數p,q φ(pq)=pq-1
尤拉函式是積性函式,但不是完全積性函式.
2.對於乙個正整數n的素數冪分解n=p1^q1*p2^q2*...*pn^qn.
φ(n)=n*(1-1/p1)*(1-1/p2)*...*(1-1/pn).
3.除了n=2,φ(n)都是偶數.
4.設n為正整數,∑φ(d)=n (d|n).
根據性質2,我們可以在o(sqrt(n))的時間內求出乙個數的尤拉函式值.
如果我們要求1000000以內所有數的尤拉函式,怎麼辦.
上面的方法複雜度將高達o(n*sqrt(n)).
我們來看看線性篩法的程式:
#include#include妙啊!!!!!!!!!!!using
namespace
std;
int euler[100
];int max = 100
;void
init()
intmain()
尤拉函式φ
尤拉定理是用來闡述素數模下,指數同餘的性質。
尤拉定理:對於正整數n,代表小於等於n的與n互質的數的個數,記作φ(n)
例如φ(8)=4,因為與8互質且小於等於8的正整數有4個,它們是:1,3,5,7
尤拉定理還有幾個引理,具體如下:
①:如果n為某乙個素數p,則φ(p)=p-1;
①很好證明:因為素數p的質因數只有1和它本身,p和p不為互質,所以φ(p)=p-1;
②:如果n為某乙個素數p的冪次,那麼φ(p^a)=(p-1)*p^(a-1);
②因為比p^a小的數有p^a-1個,那麼有p^(a-1)-1個數能被p所整除(因為把1~p^a-1的p的倍數都篩去了)
所以φ(p)=p^a-1-(p^(a-1)-1)=(p-1)*p^(a-1)
③:如果n為任意兩個數a和b的積,那麼φ(a*b)=φ(a)*φ(b)
③因為比a*b小的數有a*b-1個,條件是a與b互質
那麼可以知道,只有那些既滿足a與其互質且既滿足b與其互質的數滿足條件。
根據乘法原理,這樣的數可以互相組合,那麼就有φ(a)*φ(b)個
所以可以得知φ(a*b)=φ(a)*φ(b) (注意條件必須滿足a和b互質)
④:設n=(p1^a1)*(p2^a2)*……*(pk^ak) (為n的分解式)
那麼φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pk)
④因為各個分解完的p1、p2、……pk均為素數,所以它們均為互質的
每次再刨去它們本身,乘起來
剩下的運用容斥原理,再根據引理②和引理③就可以得出
其實尤拉定理是費馬小定理的推論。。。
尤拉定理:a^(φ(m))同餘1(mod m) (a與m互質)
費馬小定理是數論中的乙個定理。其內容為假如a是乙個整數,p是乙個質數的話,那麼:ap
= a(mod p)
假如a不是p的倍數的話,那麼這個定理也可以寫成:
尤拉函式 尤拉定理
尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...
尤拉函式 尤拉定理
尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...
尤拉函式和尤拉定理
1 對於素數p,p p 1 2 兩個不同的素數p,q n p q n p q p 1 q 1 3 互質的正整數a和n,有a n 1 mod n 費馬小定理 若正整數 a 與素數 p 互質,則有 a p 1 1 mod p 因為 p p 1 4 當b是素數,a b 0,則 ab a b 5 p為素數,...