Min 25篩 學習筆記

2022-04-02 14:48:00 字數 2062 閱讀 3804

這兒只是乙個簡單說明/概括/總結。

原理見這:

min_25篩用來求積性函式字首和。範圍一般是\(10^\)。

要求所求積性函式在\(f(i)\)已知時,\(f(p\times i),\ p\in primes,\ i\times p\in[1,n]\)能快速計算。

首先計算

\[g(n,j)=\sum_if(i),\quad i是質數\ 或\ i的最小質因子嚴格大於p_j\\g(n,j)=\beging(n,j-1)&p_j^2\gt n\\ g(n,j-1)-f(p_j)\left[g(\frac,j-1)-\sum_^f(p_i)\right]&p_j^2\le n\end

\]類似埃氏篩法,\(p(n,j)\)就是篩\(j\)次後剩下的數的\(f\)和,再加上所有質數\(p\)的\(f(p)\)之和。

\(p_j^2>n\)時,這一次篩不會篩掉任何數,所以就是\(g(n,j-1)\)。

\(p_j^2\leq n\)時,考慮第\(j\)次篩掉了哪些數,也就是最小質因子是\(p_j\)的那些數。因為是積性函式,所以我們直接提出乙個\(p_j\)(來保證它含\(p_j\))。

要被篩掉的數在除掉乙個\(p_j\)後的最小質因子一定仍大於等於\(p_j\)(否則在之前就被篩掉了),這符合\(g(\frac,j-1)\)的定義。所以減掉乙個\(f(p_j)g(\frac,j-1)\)。但是\(g(\frac,j-1)\)還包含所有質數的\(f(p)\)之和,所以再加上\(\sum_^f(p_i)\)。

那初值呢?先把所有合數的\(f\)的計算方式看做和質數一樣,以便對所有數的\(f\)值快速求個和,用它作為\(g(n,0)\)(注意這裡不考慮\(1\))。這樣雖然合數的\(f\)值是假的,但是\(g(n,|p|)\)還是能正確的表示所有質數\(p\)的\(f(p)\)之和。我們用的就是這個\(g(n,|p|)\)(\(n\)以內所有質數\(f(p)\)的和,\(n\)是\(1\sim 給定的n\)內任意數,\(|p|\)是小於等於\(n\)的質數個數)

現在考慮算上合數的\(f\)值求和。令

\[s(n,j)=\sum_if(i),\quad i是質數\ 或\ i的最小質因子大於等於p_j

\]我們把\(s(n,j)\)分兩部分計算,一是所有質數的貢獻,二是所有合數的貢獻。對於\(f(1)\)最後單獨算下。

那麼所有質數的貢獻可以用\(g\)表示,也就是\(g(n,j)-\sum_^f(p_i)\)(因為最小質因子要大於等於\(p_j\),所以把那些減掉)。

對於合數,列舉這個合數的最小質因子及其次數,用\(f\)是積性函式的性質直接算:

\[s(n,j)=g(n,j)-\sum_^f(p_i)+\sum_^\sum_^\leq n}\left[f(p_k^e)\times s(\frac,k+1)+f(p_k^)\right]

\]\(f(p_k^)\)是\(s\)沒有考慮的那部分(就是\(p_k^\),質數的若干次冪這樣的合數,而\(s(..,k+1)\)就把這些數忽略掉了)。

答案就是\(s(n,1)+f(1)\)。

流程:把所有合數看做質數,求一遍和,得到初值\(g(n,0)\)。同時預處理乙個\(f(p_i)\)的字首和。

用\[g(n,j)=\beging(n,j-1)&p_j^2\gt n\\ g(n,j-1)-f(p_j)\left[g(\frac,j-1)-\sum_^f(p_i)\right]&p_j^2\le n\end

\]計算\(g(x,|p|)\)(把第二維滾動掉)。

用\[s(n,j)=g(n,j)-\sum_^f(p_i)+\sum_^\sum_^\leq n}\left[f(p_k^e)\times s(\frac,k+1)+f(p_k^)\right]

\]計算\(s(n,1)+f(1)\)。

計算\(s,g\)的複雜度都是\(o(\frac})\)。

對於其它積性函式,同\(g\)一樣計算。

實現上,篩\(sqrt(n)\)內的質數這一步往往可以省略,見這裡。(現在發現博主blog掛了這怎麼辦

上面確實有挺多少見的min25題)

例題:loj6235 區間素數個數

bzoj3944 sum

loj6053 簡單的函式

以後要做的題:

篩學習筆記/

Min 25 篩學習筆記

資料和 出處 資料2資料3 打死我也不承認參考了yyb的 min 25 篩可以幹嘛?下文中未特殊說明 p 均指質數集合,p i 或 p 指某個具體質數。求一類積性函式 f x 的字首和,需要滿足 f p 可以寫成多項式的形式,或者操作一下可以寫成多項式 如例題 且 f p k 能快速求出。講真學這個...

Min 25 篩 學習筆記

埃氏篩法 整除分塊 這裡有提到 1.問題模型 2.min 25 篩 3.模板題以及模板 有乙個積性函式 f 對於所有質數 p f p 是關於 p 的多項式,f p k 非常容易計算 不一定是關於 p 的多項式 求 sum f i n leq 10 1s 設集合 p 表示素數集合。設 g sum f ...

Min 25 篩學習筆記

模板 在本文中用 p 表示質數,p i 表示第 i 個質數。題目要我們求的是乙個積性函式的字首和。我們可以對於 n 內的每乙個質因子進行單獨考慮。但是這樣子的複雜度顯然過大,而這很大一部分原因是因為 n 以內的質數。因此如果我們把所有數分成質數和合數考慮,那麼在合數中的不同最小質因子個數就是 fra...