概念
定義域為正整數的函式是數論函式。
設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尤拉莫比烏斯muphii()
for(int j=1;j<=tot&&prime[j]*i<=maxn;j++)
else phi[i*prime[j]]=phi[i]*phi[prime[j]];}}
}
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 ...