数学中国

标题: 求素单筛、求哥双筛误差 [打印本页]

作者: yangchuanju    时间: 2026-10-30 06:14
标题: 求素单筛、求哥双筛误差
求素单筛误差
给定一个正整数n,为求n内素数个数,可用埃氏筛法,分别用素数2,3,5,7……直至√n内最大素数p依次删除2,3,5,7……p的倍数数,但需保留2,3,5,7……p不被删除;
在筛余数中还有一个“孤岛1”。
为计算筛余数,人们总结出一个连乘积计算式n*∏(1-1/p),须知该连乘积计算式的计算值不等于要求的素数个数;
其中的“孤岛1”保留在计算值中,素数2,3,5,7……p均不在计算值中,除此以外还有一个不整除误差。

例1:求9--24以内素数个数
正整数n        n*1/2*2/3        素数        筛余        连乘-素数        连乘-筛余        综合误差
9        3.0000         4        3        -1.0000         0.0000         0.0000
10        3.3333         4        3        -0.6667         0.3333         0.3333
11        3.6667         5        4        -1.3333         -0.3333         -0.3333
12        4.0000         5        4        -1.0000         0.0000         0.0000
13        4.3333         6        5        -1.6667         -0.6667         -0.6667
14        4.6667         6        5        -1.3333         -0.3333         -0.3333
15        5.0000         6        5        -1.0000         0.0000         0.0000
16        5.3333         6        5        -0.6667         0.3333         0.3333
17        5.6667         7        6        -1.3333         -0.3333         -0.3333
18        6.0000         7        6        -1.0000         0.0000         0.0000
19        6.3333         8        7        -1.6667         -0.6667         -0.6667
20        6.6667         8        7        -1.3333         -0.3333         -0.3333
21        7.0000         8        7        -1.0000         0.0000         0.0000
22        7.3333         8        7        -0.6667         0.3333         0.3333
23        7.6667         9        8        -1.3333         -0.3333         -0.3333
24        8.0000         9        8        -1.0000         0.0000         0.0000
计算值中加上被筛掉的2和3,减去孤岛1,综合误差见表最后1列。
连乘-筛余之差每3个连续整数中有一个0,其余两数的“连乘-筛余”不固定;
但若只考察偶数10,12,14……24的“连乘-筛余”和综合误差分别是0.3333,0,-0.3333,0.3333,0,-0.3333,0.3333,0;三个连续偶数一个循环节。
(为使表格版面整齐,对于整数0,3,4,5,6,7,8均取3位小数,莫见怪!)

作者: yangchuanju    时间: 2026-10-30 06:14
例2:求25--48以内素数个数                                               
正整数n        n*1/2*2/3*4/5        素数        筛余        连乘-素数        连乘-筛余        综合误差
25        6.6667         9        7        -2.3333         -0.3333         -0.3333
26        6.9333         9        7        -2.0667         -0.0667         -0.0667
27        7.2000         9        7        -1.8000         0.2000         0.2000
28        7.4667         9        7        -1.5333         0.4667         0.4667
29        7.7333         10        8        -2.2667         -0.2667         -0.2667
30        8.0000         10        8        -2.0000         0.0000         0.0000
31        8.2667         11        9        -2.7333         -0.7333         -0.7333
32        8.5333         11        9        -2.4667         -0.4667         -0.4667
33        8.8000         11        9        -2.2000         -0.2000         -0.2000
34        9.0667         11        9        -1.9333         0.0667         0.0667
35        9.3333         11        9        -1.6667         0.3333         0.3333
36        9.6000         11        9        -1.4000         0.6000         0.6000
37        9.8667         12        10        -2.1333         -0.1333         -0.1333
38        10.1333         12        10        -1.8667         0.1333         0.1333
39        10.4000         12        10        -1.6000         0.4000         0.4000
40        10.6667         12        10        -1.3333         0.6667         0.6667
41        10.9333         13        11        -2.0667         -0.0667         -0.0667
42        11.2000         13        11        -1.8000         0.2000         0.2000
43        11.4667         14        12        -2.5333         -0.5333         -0.5333
44        11.7333         14        12        -2.2667         -0.2667         -0.2667
45        12.0000         14        12        -2.0000         0.0000         0.0000
46        12.2667         14        12        -1.7333         0.2667         0.2667
47        12.5333         15        13        -2.4667         -0.4667         -0.4667
48        12.8000         15        13        -2.2000         -0.2000         -0.2000
计算值中加上被筛掉的2,3和5,减去1,综合误差见表最后1列。                                               
只考察偶数26,28,30……48的综合误差分别是-0.0667,0.4667,0,-0.4667,0.0667,0.6,0.1333,0.6667,0.2,-0.2667,0.2667,-0.2;                                               
综合误差规律一时难寻。                                               
实际上要找规律需从筛余、连乘-筛余中找,30个连续整数才构成一个循环节,本例整数个数不够30。                                               

作者: yangchuanju    时间: 2026-10-30 06:16
扩大偶数范围至10--26--48--60,可以发现综合误差15个偶数一个循环节(10--40,12--42,14--44,16--46或18--48;
但20--50,22-52,24--54,26--56,28-58,30--60中大于等于50的综合误差要减去1才能成立误差循环节,可能是偶数50--60要用素数7筛分才行!
另从筛余、连乘-筛余中找,15个连续偶数构成一个循环节,连乘-筛余循环出现,且一个循环节中差值前后反对称。
例3:求10--60各个偶数以内素数个数                                               
正整数n        n*1/2*2/3*4/5        素数        筛余        连乘-素数        连乘-筛余        综合误差
10        2.6667         4        2        -1.3333         0.6667         0.6667
12        3.2000         5        3        -1.8000         0.2000         0.2000
14        3.7333         6        4        -2.2667         -0.2667         -0.2667
16        4.2667         6        4        -1.7333         0.2667         0.2667
18        4.8000         7        5        -2.2000         -0.2000         -0.2000
20        5.3333         8        6        -2.6667         -0.6667         -0.6667
22        5.8667         8        6        -2.1333         -0.1333         -0.1333
24        6.4000         9        7        -2.6000         -0.6000         -0.6000
26        6.9333         9        7        -2.0667         -0.0667         -0.0667
28        7.4667         9        7        -1.5333         0.4667         0.4667
30        8.0000         10        8        -2.0000         0.0000         0.0000
32        8.5333         11        9        -2.4667         -0.4667         -0.4667
34        9.0667         11        9        -1.9333         0.0667         0.0667
36        9.6000         11        9        -1.4000         0.6000         0.6000
38        10.1333         12        10        -1.8667         0.1333         0.1333
40        10.6667         12        10        -1.3333         0.6667         0.6667
42        11.2000         13        11        -1.8000         0.2000         0.2000
44        11.7333         14        12        -2.2667         -0.2667         -0.2667
46        12.2667         14        12        -1.7333         0.2667         0.2667
48        12.8000         15        13        -2.2000         -0.2000         -0.2000
50        13.3333         15        14        -1.6667         -0.6667         0.3333
52        13.8667         15        14        -1.1333         -0.1333         0.8667
54        14.4000         16        15        -1.6000         -0.6000         0.4000
56        14.9333         16        15        -1.0667         -0.0667         0.9333
58        15.4667         16        15        -0.5333         0.4667         1.4667
60        16.0000         17        16        -1.0000         0.0000         1.0000

作者: yangchuanju    时间: 2026-10-30 06:17
正整数n以内有多少个素数?
先用素数2筛一下,若n是偶数,筛掉一半,剩余一半,无误差;若n是奇数,筛掉一半少一点(0.5),剩余一半多一点(0.5);
以下只考虑n是偶数的情况。
接着用素数3筛分,筛掉[n/2*1/3],([***]表示向下取整),筛余n/2-[n/2*1/3],连乘积-剩余等于±0.3333或0;
2筛后单用素数5筛分,筛掉[n/2*1/5],([***]表示向下取整),筛余n/2-[n/2*1/5],连乘积-剩余等于±0.2,±0.4或0;
2 3筛后再用素数5筛分,连乘积-剩余15个偶数一循环。

不考虑取整,只按倍数含量的筛除、筛余计算,
2 3筛除量是n/2*1/3,筛余量是n/2-n/2*1/3;
接着用素数5筛,筛除量是(n/2-n/2*1/3)*1/5,筛余量是n/2-n/2*1/3-(n/2-n/2*1/3)*1/5=n/2*(1-1/3)-n/2*(1/5-1/15)=n/2*(1-1/3-1/5+1/15);
继续用素数7筛,筛除量是n/2*(1-1/3-1/5+1/15)*1/7,筛余量是n/2*(1-1/3-1/5+1/15)-n/2*(1-1/3-1/5+1/15)*1/7=n/2*(1-1/3-1/5+1/15)-n/2*(1/7-1/21-1/35+1/105)=n/2*(1-1/3-1/5-1/7+1/15+1/21+1/35-1/105);
该计算式值等于n/2*0.457142857,与n/2*2/3*4/5*6/7=n/2*0.457142857完全相等,连乘积计算式要比减减加加式简单的多。

按减减加加式算一算11筛,筛除量是n/2*(1-1/3-1/5-1/7+1/15+1/21+1/35-1/105)*1/11,
筛余量是n/2*(1-1/3-1/5-1/7+1/15+1/21+1/35-1/105)-n/2*(1-1/3-1/5-1/7+1/15+1/21+1/35-1/105)*1/11
=n/2*(1-1/3-1/5-1/7+1/15+1/21+1/35-1/105)-n/2*(1/11-1/33-1/55-1/77+1/165+1/231+1/385-1/1155)=n/2*(1-1/3-1/5-1/7-1/11+1/15+1/21+1/35+1/33+1/55+1/77-1/105-1/165-1/231-1/385+1/1155)=n/2*0.415584416,
连乘积计算式是n/2*2/3*4/5*6/7*10/11=n/2*0.415584416,完全相等。

不考虑取整,只按倍数含量的筛除、筛余计算,算不出误差。

作者: yangchuanju    时间: 2026-10-30 06:18
求哥双筛误差
给定一个正偶数n,为求n内哥德巴赫猜想分拆素数对数,可列两列正整数1,3,5,……,n-3,n-1和n-1,n-3,n-5,……,3,1,两两对齐,分别用素数2,3,5,7……直至√n内最大素数p依次删除两列正整数中的2,3,5,7……p的倍数数,俗称双筛;
在筛余数对中有时残留有非素数对1+(n-1)和(n-1),但哥猜素数对中的小素数对均被筛除。
为计算筛余素数对,人们总结出一个连乘积计算式n/2*∏(1-2/p)*∏(p-2)/(p-1),式中第一个连乘积中的p取尽√n内所有奇素数,第二个连乘积中的p仅取√n内能够整除n的奇素数。
须知该连乘积计算式的计算值不等于要求的素数对数;存在三种误差。

例4:求10--24各个偶数的哥猜素数对数                                       
偶数        连乘积        双哥        筛余        连乘-双哥        连乘-筛余
10        1.6667         3        1        -1.3333         0.6667
12        4.0000         2        4        2.0000         0.0000
14        2.3333         3        3        -0.6667         -0.6667
16        2.6667         4        2        -1.3333         0.6667
18        6.0000         4        6        2.0000         0.0000
20        3.3333         4        4        -0.6667         -0.6667
22        3.6667         5        3        -1.3333         0.6667
24        8.0000         6        8        2.0000         0.0000
表中连乘积等于n/2*1/3或n/2*2/3,连乘-双哥构成比较复杂,但连乘-筛余已经呈现出3偶一循环的规律——0,-0.6667,0.6667;0,-0.6667,0.6667;……
作者: yangchuanju    时间: 2026-10-30 06:19
例5:求10--60各个偶数的哥猜素数对数
偶数        连乘积        双哥        筛余        连乘-双哥        连乘-筛余
10        1.3333         3        0        -1.6667         1.3333
12        2.4000         2        2        0.4000         0.4000
14        1.4000         3        3        -1.6000         -1.6000
16        1.6000         4        0        -2.4000         1.6000
18        3.6000         4        4        -0.4000         -0.4000
20        2.6667         4        4        -1.3333         -1.3333
22        2.2000         5        1        -2.8000         1.2000
24        4.8000         6        6        -1.2000         -1.2000
26        2.6000         5        3        -2.4000         -0.4000
28        2.8000         4        2        -1.2000         0.8000
30        8.0000         6        8        2.0000         0.0000
32        3.2000         4        4        -0.8000         -0.8000
34        3.4000         7        3        -3.6000         0.4000
36        7.2000         8        6        -0.8000         1.2000
38        3.8000         3        5        0.8000         -1.2000
40        5.3333         6        4        -0.6667         1.3333
42        8.4000         8        8        0.4000         0.4000
44        4.4000         6        6        -1.6000         -1.6000
46        4.6000         7        3        -2.4000         1.6000
48        9.6000         10        10        -0.4000         -0.4000
50        6.6667         8        8        -1.3333         -1.3333
52        5.2000         6        4        -0.8000         1.2000
54        10.8000         10        12        0.8000         -1.2000
56        5.6000         6        6        -0.4000         -0.4000
58        5.8000         7        5        -1.2000         0.8000
60        16.0000         12        16        4.0000         0.0000
表中连乘积等于n/2*1/3或n/2*2/3再乘以3/5或4/5,连乘-双哥构成比较复杂,但连乘-筛余已经呈现出15偶一循环的规律,且前后反对称;偶数30,60误差为0;偶数14,16,44,46的误差最大为±1.6。
作者: cuikun-186    时间: 2026-10-30 07:11
本帖最后由 cuikun-186 于 2026-10-30 07:31 编辑

杨老师你好,

无论单筛还是双筛,都有如下例子:

【1】D(N)=[(π(N)^2/N]向下取整

【2】r2(N)=[(π(N)^2/N]向下取整

π(N)是包含1的所有素数的个数。

特别是128这个偶数有8对素数对,

r2(128)=8.

π埃氏(128)=π崔(128)=32,

r2(128)≥[32*32/128]=8

不超过128的素数有:

1、2、3、5、7、11、13、17、19、

23、29、31、37、41、43、47、53、

59、61、67、71、73、79、83、89、

97、101、103、107、109、113、127。

共 32个。
作者: cuikun-186    时间: 2026-10-30 07:25
D(100)=[26*26/100]=6
作者: cuikun-186    时间: 2026-10-30 07:33

特别是128这个偶数有8对素数对,

r2(128)=8.

π埃氏(128)=π崔(128)=32,

r2(128)≥[32*32/128]=8

不超过128的素数有:

1、2、3、5、7、11、13、17、19、

23、29、31、37、41、43、47、53、

59、61、67、71、73、79、83、89、

97、101、103、107、109、113、127。

共 32个。

这个实际数据彻底否定了欧拉的谬论!




欢迎光临 数学中国 (http://www.mathchina.com/bbs/) Powered by Discuz! X3.4