码迷,mamicode.com
首页 > 其他好文 > 详细

埃氏素数筛法(Eratosthenes)

时间:2019-10-20 16:28:13      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:image   删除   class   nes   表示   需要   algo   src   整数   

埃氏筛法:

对于每一个小于n的非负整数p,删去2p,3p,4p......,当处理完所有数后,还没有删除的就是素数.

 

想法:用a记录素数表,a[i]=1表示不是素数,a[i]=0表示是素数.

#include <iostream>
#include <algorithm>
#include <cmath>

using namespace std;
int n,m,a[10000005],t;

int main()
{
	a[1]=1;
	cin>>n>>m;
	int pd=sqrt(n+0.5);
	for(int i=2;i<=pd;i++) if(!a[i])
		for(int j=i*i;j<=n;j+=i) a[j]=1;
	// for(int i=1;i<=100;i++)
		// cout<<a[i]<<endl;
	for(int i=1;i<=m;i++)
	{
		cin>>t;
		if(a[t]==0) cout<<"Yes\n";
		else cout<<"No\n";
	}
	return 0;
}

注意:1不是素数,需要特判!

技术图片

 

 

技术图片

 

埃氏素数筛法(Eratosthenes)

标签:image   删除   class   nes   表示   需要   algo   src   整数   

原文地址:https://www.cnblogs.com/huaruoji/p/11707548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!