2024.2.20 闲话

本来昨天想发一个闲话的,因为是 hina 生日,不过最终也没发成 .

K8He 歌:プロポーズ - 内緒のピアス feat. 可不 .


计算:

\[\sum_{p\in\mathbb P}\left\lfloor\dfrac np\right\rfloor \]

其中 \(\mathbb P\) 是素数集 .

(下面将有一段弹性空白)


(min25 筛:\(O(\frac{n^{3/4}}{\log n})\)

定义 \(\omega_k(n)\)\(n\) 中大于 \(k\) 的素因子个数,那么对于 \(x<n-\sqrt n\),有 \(\omega_{n-x}(x)=[x\in\mathbb P]\) .

现在我们知道一种判断素数的方法了,考虑计算:

\[F(n)=\sum_{i=1}^n\left\lfloor\dfrac ni\right\rfloor2^{\omega_i(n-i)} \]

注意这显然和原问题是差不多难的 . 假设我们目前能计算 \(F(n)\),则可以对 \(i\le\sqrt n\) 的部分通过枚举不大于 \(\sqrt n\) 的素数来分解每个 \(n-i\)(根据 Mertens 第二定理,这里是 \(\Theta(\sqrt n\log\log n)\) 的)来去除对应的贡献,然后再加入每个正确的贡献 . 对于 \(i>\sqrt n\) 的部分,就是质数贡献 \(2\)、合数贡献 \(1\),这是容易修正的 .

从而问题变为计算 \(F(n)\) . 这里的一个关键事实是,\(F(n)\) 实际上在计算满足如下条件的二元组 \((r,p)\) 的数量:

  • \(1\le r,p\le n\)\(p\) 是素数 .
  • \(n\equiv r\pmod p\) .

因为 \(F(n)\) 实际上是在枚举一个 \(r<p\),然后通过乘 \(\lfloor\frac nr\rfloor\) 来计算所有更大的位置的贡献 .

考虑枚举 \(n-r\),则可以导出:

\[F(n)=n+\sum_{i=1}^{n-1}2^{\omega(i)} \]

如果你注意到 \(2^{\omega(n)}=(\mu^2*1)(n)\),那么这个任务就是简单的了 . 可以通过 Powerful Number 筛在 \(\Theta(\sqrt n\log n)\) 甚至 \(\Theta(\sqrt n)\) 的时间复杂度完成,细节可见 2023.2.17 闲话 .

这意味着这个问题可以在 \(\Theta(\sqrt n\log\log n)\) 的时间复杂度内解决,虽然问题看起来和数素数个数一样难 .

细节部分没有仔细考虑,如果有问题请指出 .

😎

posted @ 2024-02-20 16:46  Jijidawang  阅读(202)  评论(1编辑  收藏  举报
😅​