poj2407尤拉函式模板

2021-07-11 07:11:32 字數 952 閱讀 3354

第一次接觸尤拉函式,phi(x)為小於等於x且與x互質的數的個數……先介紹一些基本定理

1.定義在所有正整數上的函式成為算數函式。

2.乙個算術函式f,如果對於兩個互素整數m,n有f(nm)=f(n)*f(m)則稱f為積性函式。如果對於任意兩個正整數mn有f(nm)=f(n)*f(m)則稱f為完全積性函式。

3.如果f是乙個積性函式,則對於正整數n=p1^a1*p2^a2……(pi為素數),則f(n)=f(p1^a1)*f(p2^a2)……

4.若p為素數,則phi(p)=p-1.同時,若phi(p)=p-1,則p為素數

5若p為素數,則phi(p^a)=p^a-p^(a-1),簡單證明:p^a只有p的倍數的因子為p^(a-1)個。

6.n=p1^a1*p2^a2……則phi(n)=n*(1-1/p1)*(1-1/p2)……該式可由5推出

7.當n為奇數時,有phi(2n)=phi(n)。

8.設n為一大於2的正整數,則phi(n)為偶數

介紹幾種求尤拉函式的方法

(1)直接求解,從1遍歷到根號n,找出素因子,套入公式,接著將該素因子全部除去,最後判斷n是否本身就是素數。

(2)篩法求出素數表,除去篩的時間,其複雜度變為o(x),x為小於n的素數個數

(3)遞推求尤拉函式,適合於多次運用事先打表的情況,複雜度為o(nlnn)

演算法原理:開始令i的尤拉函式值等於它本身,如果i為偶數,可以利用定理二變為求奇數的。

若p是乙個正整數滿足

說明該數為

素數。把這個數的尤拉函式值改變,同時也把能被該素因子整除的數改變。

**

void phi()  

} if(n>1)cnt=cnt-cnt/n;

return cnt; }

int main(int argc, char const *argv)

return 0;

}

POJ 2407 Relatives 尤拉函式

題意很明確,比n小且與n互質的數的個數 尤拉函式就是用來解決這個的 首先要知道 定理 正整數n n 2 可以唯一分解成素數乘積,即 n p 1 r1 p 2 r2 p 3 r3.p s rs 其次尤拉函式有兩個性質,可以用來程式設計,單獨求phi函式 m m 1 1 p 1 1 1 p 2 1 1 ...

POJ 2407 Relatives 尤拉函式

題意很明確,比n小且與n互質的數的個數 尤拉函式就是用來解決這個的 首先要知道 定理 正整數n n 2 可以唯一分解成素數乘積,即 n p 1 r1 p 2 r2 p 3 r3.p s rs 其次尤拉函式有兩個性質,可以用來程式設計,單獨求phi函式 m m 1 1 p 1 1 1 p 2 1 1 ...

尤拉函式(模板)

尤拉函式介紹 尤拉函式,在數論中用於求解 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...