Dust Mr. prime 筛法 (Eratosthenes)

Erichsen sieve method:

For each non-negative integer less than n p, deleting 2p, 3p, 4p ......, after all data has been processed, has not been removed is a prime number.

 

The idea: recording with a prime number table, a [i] = 1 indicates not a prime number, a [i] = 0 indicates a prime number.

#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;
}

Note: 1 is not a prime number, need special sentence!

 

 

 

Guess you like

Origin www.cnblogs.com/huaruoji/p/11707548.html