線性篩求尤拉函式的證明

2022-03-02 10:11:28 字數 1199 閱讀 2264

若$i$為質數,則$\varphi(i)=i-1$;

若$p_j\mid i$,則$\varphi(i\times p_j)=\varphi(i)\times p_j$;

若$p_i\nmid i$,則$\varphi(i\times p_j)=\varphi(i)\times \varphi(j)=\varphi(i)\times (p_j-1)$。

其中$p_j$表示乙個質數。

後兩個公式是由尤拉函式的計算公式匯出的。下面給出尤拉函式的計算公式:

設$n$有$k$個質因數$p_1,p_2,p_3,\dots ,p_k$,則

$$\varphi(n)=n\prod\limits_^k (1-\dfrac)$$

我們來分析一下這個公式,它的前半部分是$n$,表示原數,後半部分是乙個連乘,可以發現每乙個重複的因式都是$\dfrac$,表示$n$的每種質因數對$\varphi(n)$的貢獻。

現在來證明第二個公式:

若$p\mid n$,則$\varphi(n\times p)=\varphi(n)\times p$

因為$p\mid n$,且$p$是乙個質數,所以$p$是$n$的乙個質因數,自然也是$n\times p$的乙個質因數,所以從$n$到$n\times p$,質因數種類沒有發生變化,尤拉函式計算公式裡的連乘部分也就沒有發生變化,只需要在最前面多乘上乙個$p$表示原數的變化。

接下來證明第三個公式:

若$p\nmid n$,則$\varphi(n\times p)=\varphi(n)\times (p-1)$

發現從$n$到$n\times p$,新增了乙個質因數種類$p$,所以除了公式的前半部分要乘上$p$,還要在後半部分乘上$(1-\dfrac)$,也即從$n$到$n\times p$,尤拉函式增長了$p(1-\dfrac)=p-1$倍。

**:

int k,lis[m+3

];

bool prm[m+3

];

int phi[m+3

];

il void

getphi()

for(ri j=1;j<=k&&i*lis[j]<=m;j++)}}

view code

其中$m$表示最大值域,$m$表示實際值域。

線性篩求尤拉函式

蒟蒻要開始打數論模板了。尤拉函式 小於n且與 n互素的數個數,記為 n 它有這樣幾個優越的性質 1.phi p p 1 因為素數p除了1以外的因子只有p,所以與 p 互素的個數是 p 1個 2.phi p k p k p k 1 p 1 p k 1 證明 令n p k,小於 n 的正整數共有 p k...

線性篩質數,線性求尤拉

本篇前半部分講線性篩質數,也叫尤拉篩,後半篇講解線性求尤拉函式。我們有一種篩質數的辦法,就是列舉每個質數,然後把這個質數的倍數都篩掉,這個做法比較簡單,在這裡不做過多介紹。尤拉篩就是在這個方法的基礎上,使得每個合數只會被它最小的那個質因子篩掉,保證了複雜度是線性的 memset isprime,1,...

線性篩尤拉函式

在數論,對正整數n,尤拉函式是小於n的正整數中與n互質的數的數目,用 varphi n 表示。其中 p 1,p 2 p n 為 x 的所有質因數,x 是不為0的整數。varphi 1 1 當正整數p為質數時 varphi n n 1 尤拉函式是積性函式,當a與b互質時,滿足 varphi a tim...