Algorithm 如何将除数之和从1到n近似? 问题

Algorithm 如何将除数之和从1到n近似? 问题,algorithm,approximation,number-theory,Algorithm,Approximation,Number Theory,我想解决这个问题: 让除数的数目=d(n)(例如,d(6)=4,因为数字6有4个除数,{1,2,3,6}),我想计算d(1)+d(2)+d(3)+……+d(n)。 但是我不能计算像10^20或10^30这样的大n(我认为如果n像10^30那么大的话,在几秒钟内计算的算法是不存在的),所以我决定找到近似计算的算法 我当前的解决方案 我发现答案接近n logn(logn的基数是e=2.71828…) 但在n=10^17的情况下,误差约为0.4% 有点精确,但我认为还有更精确的算法。 还有更精

我想解决这个问题:

让除数的数目=d(n)(例如,d(6)=4,因为数字6有4个除数,{1,2,3,6}),我想计算d(1)+d(2)+d(3)+……+d(n)。

但是我不能计算像10^20或10^30这样的大n(我认为如果n像10^30那么大的话,在几秒钟内计算的算法是不存在的),所以我决定找到近似计算的算法

我当前的解决方案 我发现答案接近n logn(logn的基数是e=2.71828…)

但在n=10^17的情况下,误差约为0.4%

有点精确,但我认为还有更精确的算法。

还有更精确的算法吗?

估计的积分

n log n + (2γ - 1)n + O(√n)

致迪里克莱特(1849年)。γ是最小的。你可以把O放下(√n) 错误术语。

这是一个错误术语。也

当然算法是存在的。@JoshLee什么意思?你知道在几秒钟内求解d(1)+d(2)+…+d(n)的算法吗?在不限制n的大小、运行时间或存储要求的情况下,“n的除数和”的算法对于小n和大n是相同的。“比如说,简单算法需要指数时间,这将澄清你的意思。”JoshLee Little编辑了我的问题。n大约是10^30,在我看来,Haskell代码的速度相当快。