[笔记]杜教筛核心原理

105 篇文章 0 订阅
57 篇文章 0 订阅
本文深入探讨了杜教筛的核心原理,通过数论中的莫比乌斯反演公式,展示了如何利用杜教筛求解前缀和问题。通过变换公式,将原问题转化为更便于计算的形式,并详细阐述了递归计算和记忆化策略,为高效解决数论相关问题提供了实用方法。
摘要由CSDN通过智能技术生成

ni=1mj=1gcd(i,j) ∑ i = 1 n ∑ j = 1 m g c d ( i , j )
=nd=1df(d) = ∑ d = 1 n d ∗ f ( d )
=nd=1dd|jμ(j/d)F(d) = ∑ d = 1 n d ∗ ∑ d | j μ ( j / d ) ∗ F ( d )
=i×j<=niμ(j)F(ij) = ∑ i × j <= n i ∗ μ ( j ) ∗ F ( i ∗ j )
=nT=1F(T)ϕ(T) = ∑ T = 1 n F ( T ) ∗ ϕ ( T )
=nT=1[nT][mT]ϕ(T) = ∑ T = 1 n [ n T ] [ m T ] ϕ ( T )

———-杜教筛:
已知问题:

S(n)=i=1nf(i) S ( n ) = ∑ i = 1 n f ( i )

取一个积性函数g使得f*g方便计算前缀和并做如下变换
(gf)(i)=d|if(d)g(i/d) ( g ∗ f ) ( i ) = ∑ d | i f ( d ) ∗ g ( i / d )

i=1n(gf)(i)=i=1nd|if(d)g(i/d) ∑ i = 1 n ( g ∗ f ) ( i ) = ∑ i = 1 n ∑ d | i f ( d ) ∗ g ( i / d )

=ij<=nf(i)g(j) = ∑ i ∗ j <= n f ( i ) ∗ g ( j )

=i=1ng(i)j=1n/if(j) = ∑ i = 1 n g ( i ) ∑ j = 1 n / i f ( j )

=i=1ng(i)S(n/i) = ∑ i = 1 n g ( i ) ∗ S ( n / i )

就可以得到
S(n)=1S(n)=g(1)S(n) S ( n ) = 1 ∗ S ( n ) = g ( 1 ) ∗ S ( n )

=i=1ng(i)S(n/i)i=2ng(i)S(n/i) = ∑ i = 1 n g ( i ) ∗ S ( n / i ) − ∑ i = 2 n g ( i ) ∗ S ( n / i )

=i=1n(gf)(i)i=2ng(i)S(n/i) = ∑ i = 1 n ( g ∗ f ) ( i ) − ∑ i = 2 n g ( i ) ∗ S ( n / i )

后面就是递归计算了,注意要记忆化S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值