XDU 1098 尤拉函式模板題

2022-08-02 21:36:14 字數 1018 閱讀 7915

原題鏈結,點選此處

尤拉函式:φ(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 ...