杜教篩

杜教篩

求積性函數f(x) 的前綴和S(n)=i=1nf(i)

狄利克雷卷積:

(gf)(x)=d|xg(d)f(xd)

x=1n(gf)(x)=x=1nd|xg(d)f(xd)

=d=1nd|xng(d)f(xd)

=d=1ng(d)x=1n/df(x)

=d=1ng(d)S(nd)


x=1n(gf)(x)=d=1ng(d)S(nd)

我們有

g(1)S(n)=i=1ng(i)S(ni)i=2ng(i)S(ni)

g(1)S(n)=i=1n(gf)(i)i=2ng(i)S(ni)

假設我們要求S(n)=i=1nμ(i)

我們只需要找出g(x) 使得(gf)(x) 的前綴和好算就可以了
我們知道

d|nμ(d)=[n=1]

那麼我們可以設g(x)=1
這樣的話

(gf)(x)=d|xf(d)g(dx)=[x=1]

i=1x(gf)(x)=1

g(1)S(n)=1i=2nS(ni)

後面的部分可以數論分塊
首先先線性篩出前面一部分(1000000μ(x) 的前綴和,後面記憶化搜索即可


再假設我們要求S(n)=i=1nϕ(i)

我們知道

d|nϕ(d)=n

(gf)(x)=d|xf(d)g(xd)

我們發現如果令g(x)=1

(gf)(x)=d|xf(d)=x

g(1)S(n)=i=1nii=2ng(i)S(ni)

S(n)=x(x+1)2i=2nS(ni)

51nod1238 最小公倍數之和V3


i=1nj=1nlcm(i,j)

ans=i=1nj=1nijgcd(i,j)

=d=1n1di=1nj=1nij [gcd(i,j)=d]

=d=1n1di=1n/dj=1n/did jd [gcd(i,j)=1]

=d=1ndi=1n/dj=1n/dij [gcd(i,j)=1]

f(x)=i=1xj=1xij[gcd(i,j)=1]

=2(i=1xij=1ij[gcd(i,j)=1])1

=2(i=1xi iϕ(i)+[i=1]2)1

=(i=1xi2 ϕ(i)+[i=1])1

=i=1xi2 ϕ(i)

代回原式子

ans=d=1ndi=1n/di2 ϕ(i)

S(n)=i=1ni2 ϕ(i)

S(n)=i=1n(gf)(i)i=2ng(i)S(ni)

推一下卷積

i=1n(gf)(x)=i=1nd|if(d)g(id)

=i=1nd|id2ϕ(d)g(id)

我們發現設g(x)=x2 就可以把d2 約掉

=i=1nd|id2ϕ(d)i2d2

=i=1ni2d|iϕ(d)

=i=1ni3

=(n(n+1)2)2

g(1)S(n)=i=1n(gf)(x)i=2ng(i)S(ni)

S(n)=(n(n+1)2)2i=2ni2S(ni)

我們知道

i=1ni2=n(n+1)(2n+1)6

我們可以杜教篩S(n)

ans=d=1nd S(nd)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章