首页 > 其他 > 详细

埃氏素数筛法(Eratosthenes)

时间:2019-10-20 16:07:45      阅读:73      评论:0      收藏:0      [点我收藏+]

埃氏筛法:

对于每一个小于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)

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!