首页 > 其他分享 >杜教筛

杜教筛

时间:2024-04-02 20:44:25浏览次数:12  
标签:nh frac 函数 sum 杜教 独角 梅比

这是一种对于一个数论函数 \(f(n)\),计算 \(S(n)=\sum_{i=1}^n f(i)\) 的快速方法。

构造两个积性函数 \(h,g\) 满足 \(h=g*f\),根据卷积的定义,有 \(h(i)=\sum_{d|i}g(d)f(\frac{i}{d})\),对 \(h\) 求和,有:

\[\sum_{i=1}^n h(i)=\sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d}) \]

\[=\sum_{d=1}^n g(d)\sum_{d|i}^n f(\frac{i}{d})=\sum_{d=1}^ng(d)\sum_{i=1}^{n/d}f(i)=\sum_{d=1}^n g(d)S(⌊\frac{n}{d}⌋) \]

然后我们得到

\[\sum_{i=1}^nh(i)=g(1)S(n)+\sum_{d=2}^n g(d)S(⌊\frac{n}{d}⌋) \]

\[g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{d=2}^n g(d)S(⌊\frac{n}{d}⌋) \]

\[g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^n g(i)S(⌊\frac{n}{i}⌋) \]

记忆化之后复杂度是 \(O(n^{\frac{3}{4}})\) 的捏。

如果预处理 \(S(1,...,k)\),那么复杂度 \(O(k)+O(\frac{n}{\sqrt k})\) 的捏。

当 \(k=n^{\frac{2}{3}}\) 时候有最小值 \(O(n^{\frac{2}{3}})\) 的捏。


欧拉函数怎么独角骰?欧拉函数怎么独角骰?欧拉函数怎么独角骰?

首先有一个 \(n=\sum_{d|n}\phi(d)\),然后套用上面的柿子 \(g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^n g(i)S(⌊\frac{n}{i}⌋)\) 可得:

\[S(n)=\frac{n(n+1)}{2}-\sum_{i=2}^n S(⌊\frac{n}{i}⌋) \]


梅比乌斯怎么独角晒?梅比乌斯怎么独角晒?梅比乌斯怎么独角晒?

首先有一个 \([n=1]=\sum_{d|n}\mu(d)\),还是套用上面的柿子可得:

\[S(n)=1-\sum_{i=2}^nS(⌊\frac{n}{i}⌋) \]

标签:nh,frac,函数,sum,杜教,独角,梅比
From: https://www.cnblogs.com/chelsyqwq/p/18111463

相关文章

  • (未完工)莫反与杜教筛
    \(p\)是质数。\(p^k\)是质数的幂。广告https://github.com/August-Light/NTFuncs这是一个关于各种数论函数的Python库!前置知识数论分块模板题1:[UVA11526]H(n)模板题2:[LuoguP2261][CQOI2007]余数求和线性筛&线性筛数论函数模板题1:[LuoguP3383]【模板......
  • 杜教筛——亚线性处理数论函数求和
    问题引入给定一个数论函数\(f(x)\),求\(\sum\limits_{i=1}^nf(i)\)。对\(n\le10^7\)甚至\(n\le10^8\)都是好做的,\(\mathcalO(n)\)解决即可,但如果\(n<2^{31}\)呢?这就需要亚线性时间复杂度的算法,杜教筛就是其一。杜教筛杜教筛是一种能在幂时间\(\mathcalO(......
  • 杜教筛学习笔记
    杜教筛是求一个数论函数f的前缀和,令其为S我们考虑构造一个数论函数g,根据狄利克雷卷积\[\begin{aligned}\sum_{i=1}^{n}(f*g)(i)&=\sum_{i=1}^{n}\sum_{d\midi}g(d)f\left(\frac{i}{d}\right)\\&=\sum_{i=1}^{n}g(i)S\le......
  • 杜教筛
    (抄袭Alex_Wei)一、知识点假设我们先现在希望求出函数\(f\)在\(n\)处的前缀和\(s(n)=\sum\limits_{i=1}^nf(i)\),我们构造另一个数论函数\(g\),设\(h=f*g\),则\[\begin{aligned}&\sum\limits_{i=1}^nh(i)\\=&\sum\limits_{ij\leqn}f(i)g(j)\\=&\sum\limits_{d=1}^ng......
  • <学习笔记> 杜教筛
    杜教筛处理数论函数的前缀和问题,可以在低于线性的复杂度里求出\(S(n)=\sum_{i=1}^{n}f(i)\)。对于任意一个数论函数\(g\),必须满足:\[\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}\sum_{d\midi}g(d)*d(\frac{i}{d})\]\[=\sum_{d=1}^{n}g(d)\sum_{j=1}^{\lfloor\frac{n}{d}......
  • 杜教筛学习笔记
    原理前置知识:积性函数,狄利克雷卷积。杜教筛可以在亚线性的时间内算出某些函数的前缀和。假设我们要算出函数\(f\)的前缀和,我们要找到函数\(g\),记\(f*g=h\)。杜教筛的前提是\(g\)的前缀和与\(h\)的前缀和都可以快速计算,我们可以快速计算\(f\)的前缀和。首先,我们考......
  • 杜教筛学习笔记
    积性函数定义:对于\(gcd(a,b)=1\),满足\(f(ab)=f(a)f(b)\)的函数。常用的积性函数:\(I(n)=1\)\(\epsilon(n)=[n==1]\)\(id(n)=n\)狄利克雷卷积对于两个数论函数\(f,g\),它们的狄利克雷卷积卷积是:\[(f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})\]单位元:\(f*\epsilon=f\)......
  • 杜教筛学习笔记
    杜教筛学习笔记闲话感觉以前根本没学懂杜教筛,于是重学了一遍,写个笔记记录一下。前置知识依赖于迪利克雷卷积、莫比乌斯反演、整除分块相关知识。记号约定及基本性质约定:\(f*g\)表示\(f\)与\(g\)的迪利克雷卷积,即\((f*g)(n)=\sum\limits_{ij=n}f(i)g(j)\)。\(f\cdot......
  • 杜教筛和Min_25筛
    学一遍忘一遍,忘一遍学一遍,生命就是在对抗熵增这两个玩意儿都是用来求积性函数前缀和的(满足对应要求的非积性函数也可以求一下)杜教筛性质要求相对高一些求\(\sum_{i=1}^{n}f(i)\),需要找到\(g(i),h(i)\),满足\(h=f*g\)且\(f,g\)都可以快速求解前缀和令\(S(n)=\sum_{i=1......
  • 杜教筛学习笔记
    杜教筛杜教筛的基本形式对于积性函数\(g(n)\)我们希望求他的前缀和\(S_g(n)\),如果有另一积性函数\(f(n)\)满足\(f*g=h\),且\(fh\)的前缀和易求,那么我们可以通过\(S_f(n)S_h(n)\)快速的求出\(S_g(n)\)。\[\begin{aligned}S_h(n)&=\sum\limits_{i=1}^n\sum\limits_{d|i}f(d)\cdo......