埃氏筛优化(如何精确计算埃氏筛法每一步剔除的合数数量)

埃氏筛优化(如何精确计算埃氏筛法每一步剔除的合数数量)

admin 2025-11-12 社会资讯 49 次浏览 0个评论

最近看到有很多条友提出文章标题所示问题,加之之前发表的相关算法为了方便表达在当时能力有限的情况下无可奈何的将解决问题的关键思路隐没了。为了让广大条友能够知其然,还能够知其所以然。特撰写此拙文,以飨条友。

对于任意足够大的整数N,文章标题所示问题可以更加细化到:在利用埃氏筛法对不大于N的整数进行素数筛选的过程中,在剔除1之后按照素数的顺序,如果将要剔除某个特定素数除自身之外的倍数,那我们该如何在不进行这个步骤之前就能够精确计算能被该特定素数整除的合数数量呢?也就是说对于不大于根号N的任意一个素数,都可以提出相应独立的问题,并通过基础的数学运算予以单独解决。当且仅当需要计算不大于N的素数个数兀(N)的时候,所有这些问题的答案才能真正派上用场。

下面将按照由易到难,由简到繁的原则分别予以阐述。开始之前需要对相关表达具体说明如下:

1 A模B表示A除以B的余数。

2 T(P)表示针对特定素数P需要剔除的合数数量的函数表达式。T是剔的拼音首字母。

3 N(P)表示满足T(P)=1条件时N的最小取值。

4 K=(N + (N模2))/2 - 1表示在剔除能被奇素数整除的奇合数的步骤中需要用到的通用因子。

5 INT(x)表示对x进行下取整操作。例如INT(6.25) = 6

下面让我们一起开始

1:T(2)=(N - (N模2))/2 - 1

N(2)=4

2:T(3)=INT((K - 1)/3)

N(3)=9

3:令S=INT((K - 2)/5)则

T(5)=S - INT((S+2)/3)

N(5)=25

4:令S=INT((K - 3)/7)则

T(7)=S - INT((S+2)/3) -INT((S+3)/5) + INT((S+8)/15)

N(7)=49

5:令S=INT((K - 5)/11)则

T(11)=S - INT((S+2)/3) -INT((S+3)/5) - INT((S+4)/7) + INT((S+8)/15) + INT((S+11)/21) + INT((S+18)/35) - INT((S+53)/105)

N(11)=121

6:令S=INT((K - 6)/13)则

T(13)=S - INT((S+2)/3) -INT((S+3)/5) - INT((S+4)/7) - INT((S+6)/11) + INT((S+8)/15) + INT((S+11)/21) + INT((S+17)/33) + INT((S+18)/35) + INT((S+28)/55) + INT((S+39)/77) - INT((S+53)/105) - INT((S+83)/165) -INT((S+116)/231) -INT((S+193)/385) + INT((S+578)/1155)

N(13)=169

因为随着特定素数P数值的增加直接导致组合数量激增,所以我就写到这里为止了。感兴趣的条友可以很容易的发现相关规律并自行进行推导。

通过上面的具体阐述可以得到如下结论:

对于任意素数P,在使用埃氏筛法剔除能被该素数P整除的合数的步骤中,需要至少保证N=N(P)=P的平方,否则该步骤可以省略。该结论可以证明为什么在使用埃筛的过程中必须利用不大于根号N的所有素数。

行文至此,关于中国素数精确统计函数兀(N)的计算公式就不用写了吧?如果一定要写就是如下这个样子。

令P(1)=2

今设N等于P(∞)的平方 则:

兀(N)=N - 1 - T(2) - T(3) - T(5) - T(7) - T(11) - T(13) - …… - T(P(∞))

显见T(P(∞))必等于1,至于第一项、第三项~倒数第二项的答案具体数值是多少,我是真的不知道了。我的能力就到这了。但我可以把责任推到素数有无穷多个上面去,

最后如果本拙文对提出该问题的条友能够有帮助,那我将感到无比欣慰。真心希望提出该问题的条友们能够认真阅读理解。

附图为精确统计10000以内素数个数的模板,其中BX列中的数字从上到下分别对应N=10000时的T(2)至T(97)。

如何精确计算埃氏筛法每一步剔除的合数数量

转载请注明来自海坡下载,本文标题:《埃氏筛优化(如何精确计算埃氏筛法每一步剔除的合数数量)》

每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,49人围观)参与讨论

还没有评论,来说两句吧...