• 杜教筛


    也许更好的阅读体验

    作用与使用前提

    对一个积性函数(f),我们要求(f)的前(n)项和(S_n),并且要求在比线性复杂度更低的复杂度情况下求出
    若有数论函数(g,h),满足
    (h=f*g)
    其中(*)为狄利克雷卷积
    并且(h)的前缀非常好求,(g)的单项非常好求,我们就可以快速的求出(f)的前缀和


    求法

    先看(f,g,h)的关系
    (egin{aligned}h(n)=sum_{d|n}f(frac{n}{d})g(d)end{aligned})
    我们对(h)求前缀和,则有
    (egin{aligned}sum ^{n}_{i=1}hleft( i ight) &=sum ^{n}_{i=1}fast gleft( i ight)\ &=sum ^{n}_{i=1}sum _{dli}fleft( dfrac {n}{a} ight) gleft( d ight) \ &=sum ^{n}_{d=1}gleft( d ight) sum ^{frac {n}{d}}_{i=1}fleft( i ight) \ &=sum ^{n}_{d=1}gleft( d ight) S_{frac {n}{d}}\ \ end{aligned})
    接下来我们把(d=1)的情况单独提出来

    (egin{aligned}sum ^{n}_{i=1}hleft( i ight) &=g(1)S_n+sum ^{n}_{d=2}gleft( d ight) S_{frac {n}{d}}end{aligned})

    再把(S_n)写到左边
    (egin{aligned}S_{n}=dfrac {left( sum ^{n}_{i=1}hleft( i ight) ight) -left( sum ^{n}_{i=2}gleft( i ight) S _frac {n}{i} ight) }{gleft( 1 ight) }end{aligned})
    对一般的数论函数(g),通常(g(1)=1),于是我们可以把(g(1))省掉,得到
    (egin{aligned}S_{n}=left( sum ^{n}_{i=1}hleft( i ight) ight) -left( sum ^{n}_{i=2}gleft( i ight) S_ frac {n}{i} ight) end{aligned})

    于是我们可以先预处理出来(S_1,S_2,cdots S_m)(m)取一个较大的数,如(10^6)
    之后我们可以通过记忆化搜索的方法来求解(S_n)


    举例

    (mu)

    我们要求(mu)的前缀和,即(f=mu)
    我们知道(I=xi*mu)
    其中(xi(n)=1,I(n)=[n=1])
    那么
    (egin{aligned}S_{mu(n)}&=left( sum ^{n}_{i=1}Ileft( i ight) ight) -left( sum ^{n}_{i=2}xileft( i ight) S _{mu(frac {n}{i})} ight) \ &=1 - sum ^{n}_{i=2} S _{mu(frac {n}{i})}\ end{aligned})

    (varphi)

    或者要求(varphi)的前缀和,即(f=varphi)
    我们知道(varphi)的一条性质
    (egin{aligned}n=sum _{d|n}varphi left( d ight)end{aligned})
    然后我们知道一个数论函数(id)并且(id(n)=n)
    于是这条性质我们也可以写成
    (id=varphi*xi)
    我们再套上面的公式,即可得到
    (egin{aligned}S_{varphi(n)}&=left( sum ^{n}_{i=1}idleft( i ight) ight) -left( sum ^{n}_{i=2}xileft( i ight) S _{varphi(frac {n}{i})} ight) \ &=dfrac{nleft(1+n ight)}{2} - sum ^{n}_{i=2} S _{varphi(frac {n}{i})} end{aligned})

    如有哪里讲得不是很明白或是有错误,欢迎指正
    如您喜欢的话不妨点个赞收藏一下吧

  • 相关阅读:
    Python中读取文件中的json串,并将其写入到Excel表格中
    Python中替换敏感字
    Python写一个批量生成账号的函数
    解决MySQL不允许远程连接的问题
    Jenkins安装与配置
    Jmeter监听tomcat
    onlyoffice document docker版安装使用总结
    onlyoffice-DocumentServer 的权限验证
    docker 部署es
    docker部署graylog使用教程
  • 原文地址:https://www.cnblogs.com/Morning-Glory/p/11335617.html
Copyright © 2020-2023  润新知