数论——两种质数筛法

数论——两种质数筛法

1. 埃氏筛

$$
O(n log⁡log⁡n )
$$

  • 质数的倍数都是合数。借助这个性质,我们可以先找到一个质数,并利用这个质数,将范围内所有非质数(合数)的给先打上标记
  • 缺点:6会被2和3给打上两次标记,会造成计算的浪费
bool nprime[N];//0为否定,为质数 ,1为肯定,为非质数 
int prime[N],cntprime=0;
int main()
{
	int n;
	cin>>n;
	for(int i=2;i<=n;i++)
	{
	    if(!nprime[i])//质数为0,加上!来使得条件为true 
		{
            prime[cntprime++]=i;
			for(int j=2*i;j<=n;j=j+i)
	            nprime[j]=1;		
		}	
	}
}

2.欧拉筛

$$

上一篇:函数在端点处为零的端点效应


下一篇:实践周4