原題鏈結,點選此處
尤拉函式:φ(n)表示對乙個正整數n,尤拉函式是小於n且與n互質的數的個數
通式:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)
其中p1, p2……pn為x的所有質因數,x是不為0的整數。
注意:將n分解為最簡質因數,每種質因數只用一次。
比如 12 = 2*2*3,那麼 φ(12) = 12 * (1-1/2) * (1-1/3) = 4(1,5,7,11)
若 n = p^k ( p為 質數 ),則 φ(n) = p^k-p^(k-1) = (p-1)p^(k-1)
特例,若n = p(k=1, p 為質數),則 φ(n) = p-p^(1-1) = p-1。
因為質數p除了1以外的因數只有p,故1至p的整數只有p與p不互質
一些尤拉函式的性質:
① n是不為0的整數。φ(1)=1(唯一和1互質的數就是1本身)
② 除了n=2,φ(n)都是偶數.
③ 小於n且與n互質的所有數的和是φ(n)*n/2。
④ 尤拉函式是積性函式——若m,n互質,φ(m*n)=φ(m)*φ(n)。
⑤ 當n為奇數時,φ(2*n)=φ(n)
⑥若n=p^k,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因為除了p的倍數外,其他數都跟n互質。
⑦ 當n是質數時,φ(n) = n-1
相關性質證明參考:
ppt講解:
由於乙個數n的質因數一定小於等於sqrt(n),所以時間複雜度o(sqrt(n))
#include/*素數篩
phi[maxn]打表
int p[maxn];
void phi()
//每種質因數只用一次
if(x>1
) ans-=ans/x;
return
ans;
}int
main()
尤拉函式(模板)
尤拉函式介紹 尤拉函式,在數論中用於求解 1 n 中與 n 互質數個數 的函式,因為研究者為尤拉,故命名為尤拉函式。通式 x x 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中p1,p2 pn為x的所有質因數,x是不為0的整數。1 1 唯一和1互質的數 小於等於1 就是1...
尤拉函式模板
對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。例如euler 8 4,因為1,3,5,7均和8互質。euler函式表達通式 euler x x 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中p1,p2 pn為x的所有素因數,x是不為0的整數。euler 1 ...
尤拉函式模板
對正整數n,尤拉函式是少於或等於n的數中與n互質的數的數目。例如euler 8 4,因為1,3,5,7均和8互質。euler函式表達通式 euler x x 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中p1,p2 pn為x的所有素因數,x是不為0的整數。euler 1 ...