#5995. 【模板】埃拉托斯特尼筛法

【模板】埃拉托斯特尼筛法

题目背景

素数是数论领域最基础的核心概念之一,快速筛选出指定范围内的所有素数,是解决大量数论问题的前置技能。埃拉托斯特尼筛法(简称埃氏筛)是一种高效、易实现的素数筛法,也是信息学奥赛入门级的必备算法。现在请你实现这一算法,完成素数查询任务。

题目描述

素数(也叫质数)是指大于 11 的自然数,且除了 11 和它自身外,不能被其他自然数整除的数。特别地,11 不是素数,22 是最小的素数。

现在给定一个查询上限 nn,以及 mm 次查询,每次查询给出一个整数 xx,请你判断 xx 是否是素数。

输入格式

第一行两个整数 n,mn, m,分别表示查询的数的上限和查询的总次数。 接下来 mm 行,每行一个整数 xx,表示一次查询的数字。

输出格式

对于每一次查询,输出一行结果:如果 xx 是素数,输出 Yes;否则输出 No

输入输出样例

样例输入 #1

10 5
1
2
3
4
9

样例输出 #1

No
Yes
Yes
No
No

说明/提示

数据范围

  • 对于 30%30\% 的数据,1n1031 \le n \le 10^31m1021 \le m \le 10^2,可通过暴力枚举法判断素数。
  • 对于 60%60\% 的数据,1n1041 \le n \le 10^41m1031 \le m \le 10^3
  • 对于 100%100\% 的数据,1n1071 \le n \le 10^71m1051 \le m \le 10^5,保证所有查询的 xx 满足 1xn1 \le x \le n