埃氏筛法

#include<iostream>
#include<algorithm>
using namespace std;

const int MAX_N=10005;

int prime[MAX_N]; 	//第i个素数 
bool is_prime[MAX_N+1];	//is_Prime[i]为true表示i是素数

int sieve(int n)
{
	int p=0;
	for(int i = 0; i <= n; i++) is_prime[i]=true;
	is_prime[0]=is_prime[1]=false;
	for(int i = 2; i <= n; i++)
	{
		if(is_prime[i])
		{
			prime[p++]=i;
			for(int j = 2*i; j <= n; j+=i) is_prime[j]=false;
		}
	}
	return p;
}

int main()
{
	//请输入你要筛选的范围
	int m;
	cin>>m;
	int q=sieve(m);
	cout<<q<<endl;   //输出在m下边的素数的个数(包括m) 
}

  

猜你喜欢

转载自www.cnblogs.com/Yinchen-One/p/8921841.html