埃氏筛

mac2022-06-30  25

当我们遇到一些情况,需要筛选出素数,但是用for循环又太耗时,那可以用埃氏筛把一定量的素数给筛选出来。

代码如下:

int tot,maxn=1000,pri[maxn]; bool is[maxn]; void Eratosthenes() { tot=0; memset(is,1,sizeof(is));//定义is数组中所有数都为1;即假设所有数都为素数,方便后面筛出素数 is[0]=is[1]=0;//数字0和1的素数都为0 for(int i=2;i<maxn;i++) { if(is[i])//如果是素数的话,is[]肯定为1 { pri[++tot]=i;//将素数存入pri数组中 for(int j=i+i;i<maxn;j+=i)//筛出不是素数的数 { is[j]=0; } } } }

 

转载于:https://www.cnblogs.com/RootVount/p/10022386.html

最新回复(0)