素数定理相关的研究

公式: \frac{n - a}{\ln n} + \pi (a) = \pi (n) 

说明:

  1. a 小于等于n
  2. \pi (a)是小于等于a的素数个数
  3. \pi (n)是小于等于n的素数个数

解读:

当a等于0时,上式就是高斯提出的素数定理,当a等于n时上式显然成立。a越大,上式求出的结果越精确,但是a越大\pi (a)越难求,实际使用需权衡考虑。

推导:

  1. a到n素数个数约为: \LARGE \frac{n-a}{(1-\frac{1}{2})(1-\frac{1}{3})(1-\frac{1}{5})(1-\frac{1}{7})(1-\frac{1}{11})...}
  2. 上式求解很复杂,黎曼素数计数公式推导过程有介绍上式的求解,太过专业,一般人看不懂吧。我们利用欧拉乘积公式处理,上式约等于:\LARGE \frac{n-a}{1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7+...}
  3. 再利用积分处理,上式约等于:\frac{n - a}{\ln n}

误差:

上式还存在一定误差,主要原因有两个,一是欧拉乘积公式本身不够精确,二是用积分代替求和会出现一些偏差。当然,这些都可以优化,但没增加一步优化,就会增加一定的计算量。

 

程序:

import math

n = 1e15
a = 1e14

pi_a = 3204941750802  #查表可是小于等于a的数组个数为这么多
pi_n = 29844570422669 #查表可是小于等于n的数组个数为这么多

gao_pi_n = (n) / (math.log(n))
print("优化之前的pi_n", gao_pi_n)
my_pi_n = (n - a) / math.log(n) + pi_a
print("优化之后的pi_n", my_pi_n)

print("优化之前的误差", pi_n - gao_pi_n)
print("优化之后的误差", pi_n - my_pi_n)

输出结果:

优化之前的pi_n 28952965460216.79
优化之后的pi_n 29262610664997.11
优化之前的误差 891604962452.2109
优化之后的误差 581959757671.8906

如此看来,效果并不明显,哎哟。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值