网课-数论学习笔记2

very good reference



Miller-Rabin

推荐看我之前写的



狄利克雷卷积

  • 乘法逆元(求 fg=ϵg 的前 n项)。

    image

  • I=φ1

    证明:走神没听到。。。

  • e=μ1

    证明:发现有平方因子则 μ(x)=0,因此只用考虑每个质因子至多出现一次的情况。那么有 (μ1)(n)=i=0n(ni)(1)i=(11)n=[n=0]

  • O(nloglogn)g=f1g=fμ

    有平凡 O(nlogn) 做法。

    先考虑 g=f1。对每一个质数做前缀和,即由 bpk1bpk等价于做高维前缀和

    g=fμ 则可以这么处理:易得有 f=g1,故我们只需要依次 对每个质数做高维差分 即可。

  • 积性函数的卷积依旧为积性函数。

    积性函数的逆依旧为积性函数。

    积性函数的复合、点积((fg˙)(n)=f(n)g(n))依旧为积性函数。



莫比乌斯反演

  • 基于约数差分的莫比乌斯反演:

    f(n)=d|ng(d)g(n)=d|nμ(nd)f(d)

  • 基于倍数差分的莫比乌斯反演:

    f(n)=n|dg(d)g(n)=d|nμ(dn)f(d)

如果将每个正整数视为高维点,那么此二者就相当于高维前缀差分以及高维后缀差分。

我们之前一直使用的一种做法本质为:先提出 gcd,然后对 [gcd(i,j)=1] 进行反演。但我个人认为这种方法不太能被称为反演,因为它只用了 e=1μ 这一条性质。

但 nixnehc 提供了一种我认为可称为“正统”的莫比乌斯反演方法。我之所以这么说,是因为它与传统反演的模式很相似:构造一个方便计算答案的 g 函数,一个方便直接计算的 f 函数,然后通过 g=fμ 来得到 g


  • i=1nj=1nf(gcd(i,j)),n107

    1. 定义 g 满足 f=g1,则:

      i=1nj=1nd|gcd(i,j)g(d)

      d=1ng(d)d|ind|jn

      d=1ng(d)nd2

      由于 g=fμ,将 g(d) 展开写的话:

      d=1nnd2t|dμ(t)f(dt)

      我们可以对 g(d)O(nloglogn) 的预处理,如果 f 为积性函数也可以线性筛。

    2. i=1nj=1nd|gcd(i,j)f(d)[gcd(id,jd)=1]

      d=1nf(d)i=1ndj=1nd[gcd(i,j)=1]

      d=1nf(d)i=1ndj=1ndt|gcd(i,j)μ(t)

      d=1nf(d)t=1ndμ(t)ndt2

      此时二次数论分块已可解,用普通线性筛预处理 μ 前缀和之后,能够做到 O(n);然而,可以发现杜教筛会顺带求出所有 基本和组 (见下文)的前缀和,故实际可以做到 O(n34)。(?)

      若再令 T=dt,则有:

      T=1nnT2t|Tμ(t)f(Tt)

      虽然最后和 1. 是一样的,但 1. 的过程在这道题上显然更加简洁。


  • i=1nj=1nlcm(i,j),n107

    转化一下:

    i=1nj=1nijgcd(i,j)

    1. f(n)=1n,定义 g 满足 f=g1,则:

      i=1nj=1nijd|gcd(i,j)g(d)

      d=1ng(d)d2i=1ndj=1ndij

      (这一步要注意提出消失的 d2

      C(n)=12n(n+1),则:

      d=1ng(d)d2C(nd)2

      再来研究 g(n) 的求法:

      g(n)=d|ndnμ(d)

      g(n)=1nd|ndμ(d)

      后面 那一块可以用线性筛预处理,总复杂度 O(n)

    2. d=1ndi=1ndj=1nd[gcd(i,j)=1]ij

      d=1ndi=1ndj=1ndt|gcd(i,j)μ(t)ij

      d=1ndt=1ndμ(t)i=1ndtj=1ndtij

      d=1ndt=1ndμ(t)t2C(ndt)2

      二次数论分块可解(剩下同上一题)。令 T=dt,则也可以化为 1. 中的式子。


  • [AGC038C] LCMs

    将最终答案乘以二再加上 ai,则是下面的式子:

    i=1nj=1nlcm(ai,aj)

    为了更方便地处理,我们令 b(i) 表示数字 ia 中出现的次数,则有:

    i=1mj=1mlcm(i,j)b(i)b(j)

    i=1mj=1mijgcd(i,j)b(i)b(j)

    就不写 1. 的做法了,反正其实大同小异。

    1. 经过与上一题类似的推理过程,我们能够得到:

      d=1mdt=1mdμ(t)(i=1mdtb(idt)i)2

      T=dt,则有:

      T=1m(i=1mTb(iT)i)2(d|TTdμ(d))

      两个括号都可以以调和级数复杂度处理,总复杂度 O(nlnn)

接下来是几道非套路的莫比乌斯反演题:


  • i=1ngcd(i3,i),n1021

    第一步先枚举 i3,因为这个东西的范围 107。于是有:

    i=1n3j=i3(i+1)31gcd(i,j)

    gcd 有一侧范围太大怎么办?考虑用 辗转相除法 优化啊!于是:

    i=1n3j=i3i3+3i2+igcd(i,jmodi)

    (注:以下部分没有考虑 (i+1)31>n 的情况。)

    i=1n3i+(3i+1)j=1igcd(i,j)

    如果你眼力足够好,就已经能看出来这是欧拉反演的一个经典模型了——gcd 求和。我们不妨再推一下:

    1. f(n)=n,定义 g 满足 f=g1,根据结论易发现有 g=φ。则有:

      i=1n3i+d=1n3φ(d)i=1n3/dj=1n3/d(3i+1)

      那两个 显然可以化为等差数列求和公式,然后再随便做一下整除分块即可。(整除分块复杂度为 n,可以做多次询问,或者再加强一下这个问题。)

    2. 懒得推了,到最后你会发现我们可以用 μ 表示出 φ 来。


  • 定义 F(n)=i=1nj=1n[gcd(i,j)+lcm(i,j)n],请对于每一个整数 i[1,n] 求出 ans(i)=i=1nF(i)n106

    不好处理,考虑通过做差分将其化为 =f(n)=F(n)F(n+1),则有:

    f(n)=i=1nj=1n[gcd(i,j)+lcm(i,j)=n]

    (明显,如果 ij 满足 n,则 gcd(i,j)+lcm(i,j)n。故上式不用考虑 n+1。)

    此题用 1. 并不方便处理,故让我们直接尝试 2.:

    f(n)=d=1ni=1ndj=1nd[gcd(i,j)=1][d+ijd=n]

    先不要急着拆 [gcd(i,j)=1],再观察一下:

    f(n)=d|ni=1ndj=1nd[gcd(i,j)=1][ij=nd1]

    容易发现 i,j 的上界可以去掉:

    f(n)=d|ni=1j=1[gcd(i,j)=1][ij=nd1]

    这里有一个 Trick:求将一个数 x 分成两个互质数相乘的方案数。将 x 质因数分解,设其有 w(x) 个不同的质因子,显然有答案 2w(x)。所以有:

    f(n)=d|n2w(nd1)

    w(x) 可以轻松线性筛预处理。总复杂度 O(n)



基本和组

定义 D(x)={x/1,x/2,,x/x}x 的基本和组。

易证其大小为 O(n)

  • Trick:{x/1k,x/2k,,x/xkk} 的大小为?

    运用设定阈值,再做均值不等式的方法。设定阈值 B,可以发现 i>B 时都有 x/ik<x/Bk,时间复杂度为 O(B+xBk)。当 B=xBk 成立时,有最优复杂度 O(x1k+1)

  • 杜教筛前置知识:

    1. D(x/a)D(x)

    2. 现已知 f=gh,且 F,G,H 分别为 f,g,h 的前缀和。已知 G(D(n)),H(D(n)),求 F(D(n))

      F(n)=i=1ng(i)H(ni)

      整除分块优化即可。



杜教筛

求数论函数前缀和的工具。

欲求 F。设计 h=fg,其中 H,G 易求。

可得:

H(n)=i=1ng(i)F(ni)

g(1)F(n)=H(n)i=2ng(i)F(ni)

具体实现:

  1. 线性筛预处理到 n23

  2. 记忆化递归计算答案。这里使用 map。(其实杜教筛复杂度的保证源于数论分块的递归最多只有两层,其余都为重复。)

如此,杜教筛有总复杂度 O(n23)

上面的是“除法式”。因为我们如果已知 F,G,想要求出 H 的话,还有一个类似的式子:

image

令还有另一种形态:

image

image

image



gcd 卷积

image

这里 解释了 gcd 卷积与 min 卷积之间的关系。



杂 Trick

  1. 推导如何用线性筛求积性函数的方法:

    对于 pk(k>1) 讨论:

    • pkx:直接转移。

    • pk|x:具体分析,甚至有可能需要维护指数等复杂信息。

  2. i=1nμ2(i),n1012

    μ2 可看作“不含有平方质因子”函数,而这等价于最大的平方因子为 1。故有:

    i=1nd2|iμ(d)

    1d2nμ(d)nd2

    根据上面的整除分块 Trick,时间复杂度为 O(n13)

    • 约数个数:d(ij)=x|iy|j[gcd(x,y)=1]

    • 约数和:σ(ij)=x|iy|j[gcd(x,y)=1]xjy

    前者证明:link

    后者证明实则差不多。我们只需改作将 pb(ca) 乘入 y,这样 jy,x 就可以看作在 i,j 分别选入的部分相乘。

    更系统的推法是对于每个 pk 先进行考虑,暴力拆,最后用积性结合。

    image



常见积性函数及它们的性质

  • μI=ϵ

  • φI=id

  • σk=Iidk

  • μ2(n)=d2|nμ(d)(不具有平方因子函数,这个式子很好理解,相当于取极大平方因子检查是否为 1)

C 为完全积性函数,则有:

(AC)(BC)=(AB)C

image



贝尔级数

image

注意这个东西和狄利克雷生成函数是不同的。它只在积性函数上有定义。

image

有性质:对于完全积性函数 f,有 f(pk)=f(p)k,故其贝尔级数为 11f(p)x

image

w 函数表示 n=xyxy 的方案数;λ 的组合意义我看不出来。但可以发现,λ 为完全积性函数。

image

image



Powerful Number 筛

Powerful Number:每个素因子次数 2

Powerful Number 可写作 x2y3 的形式。

。。。。啊吧啊吧啊吧

posted @   David_Mercury  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示