杜教筛

今天被杜教筛折磨得有点难受,写一个笔记

前置知识

常见积性函数

主要是为了找到方便求的数论函数

分别有

  • 常见积性函数:(varphi),(mu),(sigma),(d)

  • 常见的完全积性函数:(epsilon),(I),(id)

其中(ϵ(n)=[n=1]),(I(n)=1),(id(n)=n)

狄利克雷卷积

对于两个数论函数(f)(g),狄利克雷卷积为

[(f*g)(n)=sum_{d|n}{f(d)g(frac{n}{d})} ]

  • 常见卷积性质:
    1. (varphi*I=id)
    1. (mu*I=epsilon)
    1. (mu*id=varphi)

推导过程

设我们要求的函数(f)的和(sum^{n}_{i=1}{f(i)}=S(n))

找到一个函数(g)与函数(f)相卷

[sum^{n}_{i=1}{(f*g)(i)}\ =sum^{n}_{i=1}sum_{d|i}{f(d)g(frac{i}{d})}\ =sum^{n}_{d=1}{g(d)}sum^{lfloorfrac{n}{d} floor}_{i=1}{f[i]}\ =sum^{n}_{d=1}{g(d)S(lfloorfrac{n}{d} floor)} ]

导出这个过后,我们转化一下

[sum^{n}_{i=1}{(f*g)(i)}=sum^{n}_{d=1}{g(d)S(lfloorfrac{n}{d} floor)}\ sum^{n}_{i=1}{(f*g)(i)}={g(1)S(n)}+sum^{n}_{d=2}{g(d)S(lfloorfrac{n}{d} floor)} ]

我们要求的东西是(S),而由上面的可以知道,只要知道某些比(n)小的(S)就可以推出(S(n))

显然我们后面的可以用数论分块做到类根号

不过,这里需要((f*g)(i))(g(i))都可以快速算出,也就是预处理这个的复杂度不能大于杜教筛的复杂度

原文地址:https://www.cnblogs.com/zzqdeco/p/13377230.html