20250207数论课堂笔记
欧几里得算法
\(f,g,h\) 函数。
解法:先取模,然后写成合式拆。
具体一点是把 \(n\) 替换成 \(km+r(r<k)\) 的形式,然后整块的部分和散块的分开做,这就有些类似递归。
对于每一个小部分,我们想通过转换合式的方法化简式子,于是把一个数 \(n\) 拆成 \(\sum\limits_{i=1}^{n}1\) 的形式。后面就转换成更小的数然后化简。
欧拉定理
exgcd。
扩欧。
筛
莫反相关
一些常见积性函数以及一点点卷积。
一点简单题。
杜教筛
构造 \(g\),将其与 \(f\) 卷积。需满足 \(f\ast g\) 是一个能够快速求解的东西且 \(g\) 也能快速求解。然后把含 \(\sum\) 式子拆开移项化简。
复杂度:
均值不等式得:\(m=n^{2/3}\) 时,\(T(n)=O(n^{2/3})\)。
因为有 \(\mu\ast1=\epsilon\),还有 \(\varphi\ast1=id\)。
例子:P3768
\(f=\varphi\times id^2\),构造 \(g=id^2\),可得 \(h=f\ast g=n^2\sum\limits_{d|n}\varphi(d)=n^3\)。
考虑点乘有类似分配律的性质,于是就可以考虑以下两类和组:
- \(\mu\times id^k\)
- \(\varphi\times id^k\)
它们同时卷上 \(id^k\) 后可以先把 \(id^k\) 写成 \(id^k\times1\) 然后提出公因式。
PN 筛
pn 性质:
- pn 可以写成 \(a^2b^3\) 的形式。
- \(n\) 以内的 pn 个数为 \(O(\sqrt n)\) 个。
证明:通过枚举 \(a\) 来确定 \(b\) 的个数,有:
球 pn 的方法:先筛出 \(\sqrt n\) 内的质数然后 dfs。
找一个 \(g\) 满足:
- \(g\) 是积性函数。
- \(g\) 易求前缀和。
- 对于质数 \(p\) 有 \(g(p)=f(p)\)。
我们考虑去构造 \(h=f/g\),此处 \(/\) 指的是狄利克雷卷积的除法,所以 \(h\) 也是积性函数。
因此有 \(h(1)=1\),并且对 \(p\in prime\) 有 \(f(p)=g(1)h(p)+g(p)h(1)=h(p)+g(p)\),所以 \(h(p)=0\),进而得出对于非 pn 数的所有 \(n\) 有 \(h(n)=0\)。
然后开始推式子:
其中 \(G\) 可以快速地算,我们需要求解 \(h(p^c)\)。
有两种可选择方案:
- 用仅与 \(p,c\) 有关的式子得出。
- 用 \(f,g\) 推出。
对于第二种,将 \(p^c\) 代入得到:\(h(p^c)=f(p^c)-\sum_{i=1}^cg(p^i)h(p^{c-i})\)。
然后暴力求解就行,时间复杂度 \(O(\sqrt n\log n)\)。
\(\text{Stern-Brocot}\) 树
就是一直迭代,对于每次迭代,对于任意相邻项 \({a\over b},{c\over d}\),在中间插入 \(a+c\over b+d\)。
有两个重要性质:
- 最简性:就是最简分数。
- 完全性:能够搜出所有最简分数。
证明最简性:
将树上每个点看成矩阵,对于 \(a+c\over b+d\),我们可以看做:
考虑归纳证明。若 \({a\over b}\) 已经得到证明是最简分数,有 \(a\perp b\),现在尝试证明 \(c\perp d\)。
我们尝试把每次迭代的操作写成两种矩阵:
因为 \(S\) 由若干 \(L,R\) 组成,所以 \(\det(S)=\det(L)=\det(R)=1\),进而有:\(bc-ad=1\),于是得到 \(c\perp d\)。
备注
-
下来重推一下“循环之美”。
-
复习 pn 筛。

浙公网安备 33010602011771号