|
本帖最后由 wesmond 于 2019-4-1 23:50 编辑
公元前250年左右,古希腊人埃拉托塞尼创造了一种筛法用来寻找素数:要得到不大于某个自然数N的所有素数,只要 在2、3、4、5…N中将不大于 根号N素数的倍数划去便可得到小于N的所有素数。有没有其它的、更简洁的方法可以得到小于某个值的所有素数,并且可以计算精确的素数数量?这就是本文所讨论的,她是由 初等数论中基 本性质推导出来,过程并不复杂。可以解决 素 数分布中的“数量问题”。几年前我曾经在网上发表过的拆分合并消除法,成功的证明了从M^2- M^2+M之间最少有一个素数,她还可以推导出“小于M^2 的素数个数0误差计算方法”。虽然现在还比较复杂,并且还有很大的简化空间。有人说她是改进了的筛法!她能把素数的结构及生成规律很抽像的展现出来。
分解合并对比消除法 (是这个计算方法的理论基础)
对比两个数列 ,它们的项数是一样的
(1) 1、2、3、4、5、6、7………M
(2)M^2 +1、 M^2 +2、 M^2 +3、 M^2 +4、M^2 +5、……M^2 +M
将两数列同时进行素因子分解,然后进行比较合并消除。
数列1可以分解成数列 A
2*1、2*2、2*3、2*4………2*M/2
3*1、3*2、3*3、3*4………3*M/3
5*1、5*2、5*3、5*4………5*M/5
………
p*1、p*2、p*3、p*4………p*M/p
数列2的合数可以分解成为数列 B
2(a+1)、2(a +2)、 2(a +3)……2(a +M/2) 或2(a+M/2+1)
3(b+1) 、3(b+2) 、3(b+3) 、2(b+M/3) 或2(b+M/3+1)
5(c+1) 、5(c+2)、 5(c+3)……5(c+M/5) 或5(c+M/5+1)
………
p(n+1) 、p(n+2)、 p(n+3)……p(n+M/p) 或p(n+M/p+1)
(p为小于或等于M的素因子,M/P取整数,余数不计)
不难看出,数例A跟数例B的数量差是数例B中的加一项。根据连续自然 数的性质,如数例1和数例2 中 ,每连续的6个数,2素因子跟3素因子必合并消除一次,如此类推将数列A与B同时进行合并分别还原成数列1 、2 , 数例A中 每 消 除 一 项,数例B中必定也会跟着消除一项,当数例A消除还原到数例1时,数例B消除到最后如果将加1 项也能完全消除,由于数例B比数 例 1 少一个“1”,就能够证明“M^2到 M^2+M中至少有一个素数”。并可以推导出“还原后的数列1跟数列B之差就是M^2到 M^2+M中的所有素数”。
而且容易证明数列2的p(n+1) 、p(n+2)、 p(n+3)……p(n+M/p+1)项与其它数列的合并消除之后的项小于或者等于数列1的p*1、p*2、p*3……p(M/p)项.
证明:
因为数列2的所有含P素因子项数是M/p+1项,那么多出的这一项可表示为P(M/p+1)*C,因为P(M/p+1)是大于M的,那C必定是一个含有小于或者等于M的非P素因子项,加1项也被消除掉了。
得证:
那么M^2到 M^2+M之间至少有一个素数。杰波夫猜想得证了。合并之后数例2与数例1之差就是M^2到 M^2+M之间另外全部素数,另外可以推导出一个素数的计算公式,小于M2的素数个数是:
P(M^2)=(2M-1)+合并差之和 - 加一项之和
将1^2到10^2 的所有数按下图排列,并每行进行分拆对比消除,就会得到小于10^2的所有素数数量
试求小于100的素数个数。
零误差的素数计算方法
旁边的数字是加一项,红色数字是两素因子合并多的项,增加因素+1,深红色的数字是三素因子合并多的项,增加因素+2。
如在10、11、12中,比1、2、3中 2*3*2多合并了一次,所以合并之差的增加因素+1。2素因子在10和12中出现了共两次,比1、2、3中多了一个,所以减少因数加一项-1.所以素数个数是1。在37、38、39、40、41、42与1、2、3、4、5、6分拆合并消除的对比后,2*5*4的合并项是多出来的,但是因为没有减少因素,所以这里出现了两个素数37跟41.在57、58、59、60、61、 62、63、64与1、2、3、4、5、6、7、8分拆合并消除的对比后,6*5*2是增加因素+1,3*7*11增加因素+1。3素因子多了一项,加一项-1,得出两个素数59,61.如此类推,得出
小于10^2的增加项共有
2*3*2=12 2*3*3=18 2*3*4=24 2*3*5=30
2*5*4=40 2*5*5=50 2*5*6=60 2*5*7=70 2*5*8=80 2*5*9=90
2*7*4=56 2*7*5=70 2*7*6=84 2*7*7=98
3*5*2=30 3*5*3=45 3*5*5=75
3*7*3=63 2*3*9=72 2*3*15=90
共计20项 减少项共计有13项。
小于100的素数个数为P(10^2)=2(10-1)+20-13=25个。
按这种方法逐级上推直到无限大,得出的值与实际完全一致。
如果有不同意见,欢迎共同探讨! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|