20250207数论课堂笔记

欧几里得算法

\(f,g,h\) 函数。

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

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

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

欧拉定理

exgcd。

扩欧。

莫反相关

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

一点简单题。

杜教筛

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

复杂度:

\[\begin{aligned} T(n)&=T_0(m)+\sum_{k>m}T(k)\\ &=T_0(m)+\sum_{k=1}^{n/m}O(\sqrt{n\over k})\\ &= O(T_0(m)+\int_{0}^{n/m}\sqrt{n\over x}dx)\\ &=O(m+{n\over\sqrt m}) \end{aligned} \]

均值不等式得:\(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 性质:

  1. pn 可以写成 \(a^2b^3\) 的形式。
  2. \(n\) 以内的 pn 个数为 \(O(\sqrt n)\) 个。

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

\[\int_1^\sqrt n\sqrt[3]{n\over x^2}dx=O(\sqrt n) \]

球 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\)

然后开始推式子:

\[\begin{aligned} F(n)=\sum_i^nf(i)&=\sum_i^n\sum_{d|i}h(d)g({i\over d})\\ &=\sum_{d=1}^nh(d)\sum_{i=1}^{\lfloor{n\over d}\rfloor}g(i)\\ &=\sum_{d\in PN\vee d\le n}h(d)G({\lfloor{n\over d}\rfloor}) \end{aligned} \]

其中 \(G\) 可以快速地算,我们需要求解 \(h(p^c)\)

有两种可选择方案:

  1. 用仅与 \(p,c\) 有关的式子得出。
  2. \(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\),我们可以看做:

\[S= \begin{pmatrix} b&d\\a&c \end{pmatrix} \]

考虑归纳证明。若 \({a\over b}\) 已经得到证明是最简分数,有 \(a\perp b\),现在尝试证明 \(c\perp d\)

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

\[L= \begin{pmatrix} 1&1\\0&1 \end{pmatrix}, R= \begin{pmatrix} 1&0\\1&1 \end{pmatrix} \]

因为 \(S\) 由若干 \(L,R\) 组成,所以 \(\det(S)=\det(L)=\det(R)=1\),进而有:\(bc-ad=1\),于是得到 \(c\perp d\)

备注

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

  2. 复习 pn 筛。

posted @ 2025-02-07 15:35  Lyrella  阅读(45)  评论(0)    收藏  举报