線性篩篩積性函式

2022-05-07 00:57:08 字數 721 閱讀 9577

概念

定義域為正整數的函式是數論函式。

設p,q互質f[p*q]=f[p]*f[q],稱f為積性函式。如約數,尤拉,莫比烏斯。

任意p,q,f[p*q]=f[p]*f[q],稱f為完全積性函式。如1函式,即f[i]=1。

我們一般用線性篩就可以預處理積性函式。

尤拉phi

void

phii()

for(int j=1;j<=tot&&prime[j]*i<=maxn;j++)

else phi[i*prime[j]]=phi[i]*phi[prime[j]];}}

}

尤拉莫比烏斯mu

void

init()

else mu[i*prime[j]]=-mu[i];//

質數個數++

} }

}

莫比烏斯

約數約數有兩種,一種是求約數個數和,一種是求約數和

(不想自己手打原因)摘自這篇部落格

打的時候不要把1給忘了

void

init()

else}}

}

約數個數

void

init()

else}}

}

約數和

積性函式線性篩

oi中有時需要我們線性篩某些函式,我們篩的主要是積性函式 1st 線性篩素數 include includeusing namespace std const int maxn 1e4 5 int n,prime maxn vis maxn tot void get prime int n int ...

線性篩法與積性函式

尤拉函式 1.varphi p p 1 證明 顯然 2.varphi i p p varphi i if space i bmod p 0 引理1 varphi p a p 1 p 證明 比 p a 小的數一共有 p a 1 個,其中與 p a 不互質的且小於 p a 的 即 p 的倍數 p t 一...

積性函式篩法

很多常用的數論函式都是積性函式,而在題目中,我們常常需要線性 甚至更高 的篩法。對於積性函式,我們可以在篩素數的基礎上稍加修改,即可完成線性篩。首先,注意到積性函式的特點 f xy f x times f y 而可以線性篩的積性函式,需要知道以下兩個式子的快速求法 f p quad f p k p ...