质数计数函数与黎曼 zeta 函数的关系以及其显式形式 [下]
(接上篇)

下面引入质数计数函数 π(x) 的大哥 Π(x), 其定义如下:
下图是 Π 的 1~100 的图像

根据 Möbius 反演, π 的值可以由 Π 计算出:
其中 μ 是 Möbius 函数, μ 的定义比较难用式子表达, 这里用文字描述一下: μ(x) 定义域为全体正整数, 考虑 x 的质因素分解 (即把 x 分解为一系列质数的乘积), 当分解出重复的质因数时 μ(x) = 0, 否则 μ(x) = (-1)^k, 其中 k 是质因数的数量, 并且因为 1 没有质因数, 所以 μ(1) = 1. 下图为 μ 的 1~50的图像:

Möbius 反演这里也不介绍了, 感兴趣的可以去找找其他文章, 这里重要的是上面的式子.
另外还有, 直接代入 π 的定义可以得到:
交换求和顺序可以得
其中两个求和可以写在一起, 得到 . 并且 Π 也存在"圆滑"版本的 Π₀.

Π 与 ζ 的联系
Π 与 ζ 有 , 证明:
将欧拉乘积形式的 ζ 代入然后 Taylor 展开 (上篇也有相同的步骤) 得
交换积分求和顺序得
使用 -s 替换 s 得
证毕.

Π 与 ψ 的联系
现在有两个等式 (R(ln ∘ ζ))' = MDψ 以及 R(ln ∘ ζ) = -I × MΠ, 可以得到
化简得
对上式取 Mellin 逆变换得

Π 的显式形式
Π 的显式形式为
其中 li 和 ρ 的定义与上篇的一样. 证明:
因为上面使用的函数算符都是线性的, 并且 li(x) = Li(x¹), 那么对照 ψ₀ 的显式形式可以知道 ψ₀ 和 Π₀ 是逐项对应的, 那么只需要证明 就可以了 (差一个常数).
等号左边为
根据 li 的定义可以知道 , 那么等号右边第二项为
那么 , 从而证得逐项对应的. 但是常数项 ln2 还不知道是怎么来的, 貌似是跟不完全 Γ 函数有关, 这里就忽略这个问题罢.
跟 ψ₀ 的显式形式一样, 通过把 ζ 零点求和分为平凡零点和非平凡零点, 并且平凡零点求和可以直接计算得出 (也是不知道计算过程), 得到
然后就是画图时间, 使用前 100 个非平凡零点的图像:

使用前 25000 个非平凡零点得到的绝对误差:

跟 ψ₀ 不一样的是, 因为 1 是 li 的极点, 所以计算 Π₀ 需要注意在接近 1 时会数值爆炸.

π 的显式形式
实际上根据 Π₀ 的显式形式就已经可以直接求出 π₀ 的显式形式了 (通过 Möbius 反演), 不过大部分情况下会定义一个函数 R
并且 μ 与 ζ 有关系 , 证明: 根据欧拉乘积形式有
不难看到乘积展开后会产生一些列的 ±1 / n^s, n 为没有重复质因数的整数, 并且符号取决于质因数的数量, 对比 μ 的定义即可证得.
那么 , 因为 1 是 ζ 的极点, 所以 1/ζ(1) = 0. 那么综上所述, π₀ 的显式形式可以写为 (这次分开平凡/非平凡零点就不能化简了)
画图时间, 使用前 100 个非平凡零点的图像:

使用前 25000 个非平凡零点得到的绝对误差:

跟 Π₀ 一样, 注意 li(1) 是极点, 但是 R 的定义里有 x^{1/n}, 随着 n 的增加这个的值是趋向 1 的, 所以为了避免数值爆炸必须对 R 里的求和进行截断. 上面绝对误差图像里, 误差集中在 ~0.007 的原因就是进行了截断.

计算和生成图片的代码可以在我的 github 垃圾桶里找到:
https://github.com/nyasyamorina/trash-bin/blob/main/prime-counting-function.jl