線性篩尤拉函式

2022-05-07 19:18:11 字數 1100 閱讀 1161

在數論,對正整數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 \times b)=\varphi(a) \times \varphi(b) $

當p為質數時 $ \varphi(pk)=pk-p^=(p-1)\times p^ $ 因為除了p的倍數外,其他數都跟n互質。

當n為奇數時,$ \varphi(2n)=\varphi(n) $,證明與上述類似。

當\(n>2\)時,$ \varphi(n) $都是偶數

第一種寫法 類似於埃氏篩法 \(o(n\sqrt)?\),不推薦

int euler[maxn];

void euler_init()

for(int j=1;j<=cnt;j++)

else phi[i*prime[j]]=phi[i]*(prime[j]-1);//③

} }}

\[\begin\varphi(i \times prime[j]) =i \times prime[j] \times \prod\limits_^)} =prime[j] \times \varphi(i)\end

\]\[\varphi(i\times prime[j])=\varphi(i)\times \varphi(prime[j])=\varphi(i)\times (prime[j]-1)

\]若n,a為正整數,且n,a互質,則$ a^ \equiv 1 \pmod n $

當n為質數時,即為費馬小定理$ a^ \equiv 1 \pmod n$求解乘法逆元,若a,n互質,則

$ a^ \equiv 1 \pmod n\\ \rightarrow a^ \times a \equiv a^ \times a \pmod n\\ \rightarrow a^ \equiv a^ \pmod n\(

所以,a的在模n意義下的乘法逆元等於\) a^ $

線性篩(尤拉篩)

昨天的考試跪的一塌糊塗 第一題水過,第二題帶wa的樸素,最後題忘了特判左端點全跪,分數比起預計得分整整打了個對折啊!步入正題 線性篩 尤拉篩 一般的篩法 ppt裡叫埃拉託斯特尼篩法,名字異常高貴 的效率是o nlglgn 其實很接近o n 啊!對於一些例如n 10000000的殘暴資料會跪,於是,線...

尤拉篩 線性篩

實現 include using namespace std const int max n 1e8 int prime max n cnt bool st max n 使用bool陣列節省空間 void is prime int n intmain 每個合數只被自己最小的質因子篩去。現在證明在i ...

尤拉篩(線性篩)

尤拉篩多用於篩素數,時間複雜度是o n 主要原理 合數 最小質因子 合數 質數 這個合數的組成是唯一的,尤拉篩裡面只在這種情況篩一次,也就是每個數就篩一次,可以完成o n 的複雜度。每當列舉到乙個數,把這個數當作後面的那個數,在已經得到的質數里列舉當作最小質因子,看看這樣的組合能找到哪個合數,但是要...