杜教筛
杜教筛 前置技能树:积性函数 就是对于函数 \(f(x)\) 对于任意两个互质整数 \(a,b\) ,如果有 \(f(a)·f(b)=f(ab)\) 则 \(f\) 为积性函数 如果对任意 \(a,b\) 成立, \(f\) 为完全积性函数。 前置技能树:狄利克雷卷积 狄利克雷卷积是一种运算定义。 \(f*g=\sum\limits_{d|n}f(d)g(\frac nd)\) 其显然满足交换律。 前言 一般我们求积性函数有优秀的 \(O(n)\) 欧拉筛 但是实际运用中,我们往往需要得出积性函数的前缀和来进行运算,而且总是有一些毒瘤出题人把数据出到 \(1e10\) 之类,此时线性筛就不够用了。 为了解决这个问题,我们就需要一种新的筛法—杜教筛。 杜教筛是一种筛法,能够以 \(O(n^{\frac23})\) 的时间复杂度求积性函数的前缀和 此外好像还有 \(min\_25\) 筛,复杂度为 \(O(n^{\frac{3/4}{log_n}})\) 但是学不动了 \(Orz\) 具体推导 这个东西都是套路。。。 如果不想看公式了其实翻到下面加粗加大地方背个板子也挺不错 设 \(f(n)\) 为你要筛的函数, \(S(n)=\sum\limits_{i=1}^{n}f(i)\) 。 我们构造两个积性函数 \(h,g\) ,使得 \(h=g*f\) 。 \(\sum\limits_