本文主要是介绍杜教筛学习小计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天做模拟赛由于不会杜教筛导致70分。。。
于是去学了一下
μ
求 M(n)=∑ni=1μ(i)
μ 有性质: ∑d|nμ(d)=[n=1]
于是有式子:
1=∑i=1n[i=1]=∑i=1n∑d|iμ(d)=∑t=1n∑d=1[nt]μ(d)=∑i=1nM([ni])
转换一下得到:
M(n)=1−∑i=2nM([ni])
然后M(n)里n的取值只有根号种,可以递归或者递推算
ϕ
求 S(n)=∑ni=1ϕ(i)
ϕ 有性质: ∑d|nϕ(d)=n
(因为相当于枚举gcd,然后 ϕ(d) 就是n以内的数跟n的gcd为d的个数)
于是有:
12×n×(n+1)=∑i=1ni=∑i=1n∑d|nϕ(d)=∑t=1n∑d=1[nt]ϕ(d)=∑i=1nS([ni])
转化一下得到:
S(n)=12×n×(n+1)−∑i=2nS([ni])
也可以直接算
这篇关于杜教筛学习小计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!