1. 程式人生 > >min_25篩學習小記

min_25篩學習小記

終於在考試中碰到了一題不能用杜教篩的函式,被迫來學這個。。。

概述

首先這個函式f(x)要求是積性函式,而且f(p)f(pc)都要很好計算,設一個“假的”f(x)表示把x直接當成質數時的f(x)f(x)是(或者能拆成)完全積性函式(比如說簡單多項式),且i=1nf(x)要很好算。
min_25篩的過程有用到埃氏篩法(就是每次選一個質數篩掉其倍數的篩法)的思想,我們先把所有數當成質數,得到i=1nf(x),然後不斷地篩得到i=1n[iP]

f(x)也就是i=1n[iP]f(x)。得到這個所有質數函式值之和後,我們用類似的方法倒著推回去,得到真的函式值i=1nf(x)

篩質數的函式值

設質數集合P={p1,p2,...,pt}pt2nminp(x) 表示x的最小素因子。
g(m,j)=i=1m[iPminp(i)>pj]f(i),顯然對於pj2>mjg(m,j)都是相同的,只關心

pj2m的情況。
我們現在知道g(m,0),要求g(m,t)。不難推出轉移:

g(m,j)=g(m,j1)f(pj)(g(mpj,j1)g(pj1,j1))
其中g(pj1,j1)就是