前言:
新年第一个工作日,为什么这么颓这么困。。。
学长退役的时候,曾经问过我:你们都知道我们的blog吗
我表示Of course
今天在网上翻到了abclzr的blog
想当年莫比乌斯反演是TA爷给学长们讲的
虽然听过天宇哥哥,姜爷和丁队的课,然而对于这种高级数论,不敢说掌握(甚至连理解都做不到)
基础知识
学长blog的第一部分是:枚举除法
不要以为这是c++入门操作而不xi看
在做了一部分反演题之后,发现枚举法是最常用的一种奇技淫巧
- trunc(n/i)只有O(sqrt(n))种取值
- 对于i,是与n除以i并下取整取值相同的一段区间的右端点
- 一个很有用的性质:
- 上取整也有上述的3个性质
积性函数
- f(ab)=f(a)*f(b)
- 完全积性:不要求gcd(a,b)=1
- 一般会考虑成:
- 当f不是0的常值函数时,f(1)=1
- 积性函数的狄利克雷前缀和也是积性函数
- 两个积性函数的狄利克雷卷积也是积性函数
- 积性函数可以线性筛出,线筛可以找到每个数的最小质因子及其次数,如果我们可以以较小的代价求出f(p^k),我们就可以线筛了
常见的积性函数
- 除数函数σk(n)=∑d^k,表示n的约数的k次幂和
- 约数个数函数:d(n)
- 约数和函数σ(n),表示n的约数之和
- 欧拉函数φ(n),表示不大于n且与n互质的正整数个数
- 莫比乌斯函数μ(n),在狄利克雷卷积的乘法中与恒等函数互为逆元,完全积性
- 元函数e(n)=[n=1],狄利克雷卷积的乘法单位元,完全积性
- 恒等函数I(n)=1:完全积性
- 单位函数id(n)=n:完全积性
- 幂函数idk(n)=n^k:完全积性
初等积性函数μ
- 官方定义
- 简单性质
- 莫比乌斯反演
初等积性函数φ
- φ(n)表示1~n于n互质的数的个数
关于φ函数的计算,有好几种方式:
- φ实际上完全可以用μ代替
- 简单性质:
杜教筛
在网上翻大神的blog的时候,看到别人的老师说的杜教筛秘诀:
这里就必须要吐槽一下了:
人家的老师这么专业,这么友善
能给学生如此细心的讲解问题呢(而且人家的老师还自己维护blog,方便学生学习)
而我们的老师也很NB:
会教物理,会玩手机,会查监控,会抓颓,会搞卫生,会灌鸡汤。。。
所以我们学不好不是我们的错
我无f*ck说
要学杜教筛,我们首先需要介绍狄利克雷卷积:
狄利克雷卷积满足以下性质:
(设数论函数集为I)
- 结合律: ∀f,g,k∈I,(f∗g)∗k=f∗(g∗k)
- 单位元: ∃ϵ∈I,∀f∈I,f∗ϵ=ϵ∗f=f
- 逆元: ∀f∈I,∃f∈I,f∗g=ϵ
- 封闭性: ∀f,g∈I,f∗g∈I
- 交换律: ∀f,g∈I,f∗g=g∗f
(实际上也就是计算律有那么一丁点用)
有了狄利克雷卷积,我们就来看一下杜教筛(终于进入了正题):
假设我们要求:
设g∈I,且g(1)!=0
也就是
如果我们能够快速地对g和f∗g求和,
那么由于所有的⌊n/i⌋只有O(sqrt(n))种,则对于所有i,
计算S(⌊n/i⌋)的时间复杂度为