筛法求质——poj2262&2909
这两道题都是哥赫巴德猜想的内容。基本的技术点都是在一个很大的数字范围里面求质数。直接判断两个数是不是质数,这种方法虽然可行但是还是很慢的。所以这两题我们使用打表! 而建立质数表的方法就是筛法求质,速度很快(O(nlogn)),思想很简单,就是在把这个范围的数全部列出来,然后从2开始依次把2的倍数删掉,然后前进一个数,此时是3,然后把3的倍数再全部删去,就这样依次前进。知道把这个数表处理完毕,就得到了这个数表范围内的质数。
代码如下:
bool table[1000000]={0}; table[0]=table[1]=1; for(i=2;i<1000000;i++) if(!table[i]) for(j=i*2;j<1000000;j+=i) table[j]=1;