|
谁明白这个极速筛选质数的过程的原理
这是我见过的最快速的了,原理不明.它筛选超大范围内质数时的性能特点也不清楚.
若有其它极速的也请大家介绍,谢谢.
********
我检验验证了,xp系统,赛扬1GHz,1G内存,purebasic编程
10^8内5761455个质数.用时148秒
我是提取了人家原purebasic编程中的核心代码,而同样环境,人家17秒就出结果了,它有很多辅助代码,好像是内存和汇编操作,这我不懂.
********
筛选2n内质数的过程:
P=2(注:非判断语句下的"="表示重新赋值,P=2表示现下起P赋值成2)
a=1至n,依次在每个a下时,做如下处理:
===={a====(注:这是个界线行,余同)
b=a时,如果=0,(注:b是1至2n的任一数,表示b的标记,[b.0]表示b被重新标记了0,没声明的b都表示有标记0)
则P是质数
P=2a+1
b=a+P
反复做如下若干次处理,直至b不再注:标记时不是没有重复,不是总是唯一一次标记)
质数,当a=0 1 2 3 5 6 8 9 11 14
1至2n=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
=0,0,0,1,0,0,1,0,0,01,00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
|