【模板】 线性筛质数

【模板】线性筛素数

线性筛素数(欧拉筛法)模板。


Code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
//Mystery_Sky
//
#define M 100001000
#define INF 0x3f3f3f3f
int prime[M], check[M], tot;
int n, m;

inline void get_prime()
{
	check[0] = check[1] = 1;
	for(int i = 2; i <= n; i++) {
		if(!check[i]) prime[++tot] = i;
		for(int j = 1; j <= tot; j++) {
			if(i * prime[j] > n) break;
			check[i*prime[j]] = 1;
			if(i % prime[j] == 0) break;
		}
	}
}

int main() {
	scanf("%d%d", &n, &m);
	get_prime();
	int a;
	for(int i = 1; i <= m; i++) {
		scanf("%d", &a);
		if(check[a]) printf("No\n");
		else printf("Yes\n"); 
	}
	return 0;
}
posted @ 2019-07-05 19:51  Mystery_Sky  阅读(176)  评论(0编辑  收藏  举报