欧拉phi函数
1.应用:
对一个正整数n,求小于n且与n互质(包括1)的个数。
2.公式:
I
Φ(n) =n ∏ (1 - 1 / pi),其中pi表示n的质因子,
i=1
I
n = ∏ (Pi)ki (I 为 n 的素因子的个数)
i=1
如:Φ(10)=10(1-1/2)(1-1/5)=4,其中2,5是10的质因子.
3.证明:
要证明这个式子,我们先来看几个基本的公式。
(1) Φ(p)=p-1,p是质数
(2) Φ(p*q)=Φ(p)Φ(q) p,q是质数
Φ(p*q)=p*q-1- (q-1)(注:【p,2p,...(q-1))】个数q-1) -(p-1)(注:【q,2q,...(p-1)q】个数p-1)
=(p-1)(q-1)=Φ(p)Φ(q)
(3) 对于整数n,n=pk
φ(n) = pk - pk-1
小于 pk 的正整数个数为 pk - 1个,其中
和 pk 不互质的正整数有{p * 1,p * 2,...,p * (pk-1-1)} 共计 pk-1- 1 个
所以 φ(n) = pk -1 ( pk-1- 1) = pk-pk-1 。
接下来要证明上面那个欧拉函数就是轻而易举的事情了。
I
Φ(n) = Φ( ∏ (Pi)ki )
i=1
I
= ∏[(Pi)ki- (Pi)ki-1 ]
i=1
再除以n就可以求得
Φ(n)了4.源代码模板
1int phi(int n)
2{
3 int ans,i,k;
4 if(n==1)
5 ans=0;
6
7 else{
8 ans=n;
9 k=1;
10 for(i=2;n!=1;i+=k){
11 if(n%i==0){
12 ans*=(i-1);ans/=i;
13 while(n%i==0) n/=i;
14 i=k;
15 }
16
17 }
18 }
19 return ans;
20}