20250207数论课堂笔记

欧几里得算法

f,g,h 函数。

解法:先取模,然后写成合式拆。

具体一点是把 n 替换成 km+r(r<k) 的形式,然后整块的部分和散块的分开做,这就有些类似递归。

对于每一个小部分,我们想通过转换合式的方法化简式子,于是把一个数 n 拆成 i=1n1 的形式。后面就转换成更小的数然后化简。

欧拉定理

exgcd。

扩欧。

莫反相关

一些常见积性函数以及一点点卷积。

一点简单题。

杜教筛

构造 g,将其与 f 卷积。需满足 fg 是一个能够快速求解的东西且 g 也能快速求解。然后把含 式子拆开移项化简。

复杂度:

T(n)=T0(m)+k>mT(k)=T0(m)+k=1n/mO(nk)=O(T0(m)+0n/mnxdx)=O(m+nm)

均值不等式得:m=n2/3 时,T(n)=O(n2/3)

因为有 μ1=ϵ,还有 φ1=id

例子:P3768

f=φ×id2,构造 g=id2,可得 h=fg=n2d|nφ(d)=n3

考虑点乘有类似分配律的性质,于是就可以考虑以下两类和组:

  • μ×idk
  • φ×idk

它们同时卷上 idk 后可以先把 idk 写成 idk×1 然后提出公因式。

PN 筛

pn 性质:

  1. pn 可以写成 a2b3 的形式。
  2. n 以内的 pn 个数为 O(n) 个。

证明:通过枚举 a 来确定 b 的个数,有:

1nnx23dx=O(n)

球 pn 的方法:先筛出 n 内的质数然后 dfs。

找一个 g 满足:

  • g 是积性函数。
  • g 易求前缀和。
  • 对于质数 pg(p)=f(p)

我们考虑去构造 h=f/g,此处 / 指的是狄利克雷卷积的除法,所以 h 也是积性函数。

因此有 h(1)=1,并且对 pprimef(p)=g(1)h(p)+g(p)h(1)=h(p)+g(p),所以 h(p)=0,进而得出对于非 pn 数的所有 nh(n)=0

然后开始推式子:

F(n)=inf(i)=ind|ih(d)g(id)=d=1nh(d)i=1ndg(i)=dPNdnh(d)G(nd)

其中 G 可以快速地算,我们需要求解 h(pc)

有两种可选择方案:

  1. 用仅与 p,c 有关的式子得出。
  2. f,g 推出。

对于第二种,将 pc 代入得到:h(pc)=f(pc)i=1cg(pi)h(pci)

然后暴力求解就行,时间复杂度 O(nlogn)

Stern-Brocot

就是一直迭代,对于每次迭代,对于任意相邻项 ab,cd,在中间插入 a+cb+d

有两个重要性质:

  • 最简性:就是最简分数。
  • 完全性:能够搜出所有最简分数。

证明最简性:

将树上每个点看成矩阵,对于 a+cb+d,我们可以看做:

S=(bdac)

考虑归纳证明。若 ab 已经得到证明是最简分数,有 ab,现在尝试证明 cd

我们尝试把每次迭代的操作写成两种矩阵:

L=(1101),R=(1011)

因为 S 由若干 L,R 组成,所以 det(S)=det(L)=det(R)=1,进而有:bcad=1,于是得到 cd

备注

  1. 下来重推一下“循环之美”。

  2. 复习 pn 筛。

posted @   Lyrella  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示