在撰写上一篇文章的过程中,我偶然发现了朗道-拉马努金定理。虽然它不是我想要的,但它是一个有趣的结果。
小于N 的数中,有多少部分可以写成两个非负整数平方和?埃德蒙·兰道于 1908 年发现,斯里尼瓦瑟·拉马努金于 1913 年独立地重新发现,该比例是渐近的
c / (log N ) 1/2
其中,朗道-拉马努金常数c等于 0.76422…。
让我们看看小于 1000 的平方数与定理给出的估计值相比如何。
从数学导入 sqrt、log N = 1000 c = 0.76422 print("预测: ", c / sqrt(log(N))) sumsq = N*[0] 对于范围内的 i(N): 对于范围内的 j (N): n = i**2 + j**2 如果 n < N: sumsq[n] = 1 print("精确:", sum(sumsq)/N)
预测比例为0.291,准确比例为0.330。
该脚本需要O ( N² )的时间来运行,因此如果我们想要研究非常大的N ,我们需要做一些更聪明的事情。
计算平方和一文最先出现在John D. Cook 的文章中。
原文: https://www.johndcook.com/blog/2025/07/29/counting-sums-of-squares/