求n以内素数的方法

以前求素数总是用一堆数去试除,模有0就不是素数,这样做的实在费劲。

在看别人的代码时发现一个比较优雅的方法。用空间换时间,有些时候是很可行的。

求50000内的素数:

int prime[5500]; //PI(50000)<5500
bool flag[50000];
void getprime()
{
    int i,j;
    memset(flag,0,sizeof(flag));
    for(i=2;i<50000;i++)
    {
        if(!flag[i])
        {
            prime[num1++]=i;
            for(j=i*i;j<50000;j=j+i)
                flag[j]=true;
        }
    }
}

 

posted @ 2017-01-20 13:01  DGSX  阅读(322)  评论(0编辑  收藏  举报