筛法求质——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;

 

posted on 2013-08-13 11:12  soyscut  阅读(284)  评论(0编辑  收藏  举报

导航