|
楼主 |
发表于 2017-11-4 19:52
|
显示全部楼层
本帖最后由 愚工688 于 2017-11-4 11:58 编辑
下步再加强筛去不同于3的素数p的倍数含量的根据。
在在100至199,一百个数中,p的倍数含量是100/p,在筛 ...[/quote]
下步再加强筛去不同于3的素数p的倍数含量的根据。
在在100至199,一百个数中,p的倍数含量是100/p,在筛 ...[/quote]
把3的倍数个数筛干净。
我们要得到的是筛余数。用3筛时,原来得到的筛余数是1/3,而你改用比1/3大的比例(1-13/36-13/36),得到筛余数比例10/36 ,远小于正常的比值。
所以严重影响计算值精度。有点乱筛的味道。
其它素数的【加强筛】犯同样的毛病。
不如每步除以素数的计算值取整,舍去尾数。对误差的影响还比较小些。
1000÷2=500;1000*(3/7)=428 ,
int[1000*(1/3)]=333;1000*10/36=277,
int[1000*(3/5)]=600;1000*(1-1/3-1/3)=333,
int[1000*(5/7)]=714;1000*(1-1/5-1/5)=600,
……
每一个素数的单独【加强筛】计算的误差都是比较大的,那么这样的没有精度的计算值有什么作用呢?
犯得着辛辛苦苦的一步步的去计算吗?
这样的计算值的精度不如偶数M大于70时 的素对数量为 S(M)> √M/4 为好。简简单单的快速得到计算值。
√124/4 = 2.78 ,相对误差也比你的【加强筛值】小些。
|
|