该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
【题目背景】
霸王龙有一天突发奇想,想出一个问题考察同学们对于编程中某些算法的掌握程度。
【题目描述】
给定一个长度为 n 的整数数组 a,数组元素可正、可负、可为零。接下来有 m 次查询,每次查询会给出两个整数 l 和 r(1≤l≤r≤n),表示查询数组 a 中闭区间 [l,r] 内所有元素的和(包含第 l 个和第 r 个元素)。
对于每次查询得到的区间和 s,请判断 s 是否为质数。若 s 是质数,输出 "Yes";否则,输出 "No"。
注意:质数的定义为「大于 1 的自然数,且除了 1 和它自身外,无法被其他自然数整除」。因此:
- 若 s≤1(包括负数、0、1),直接判定为非质数;
- 若 s 为大于 1 的自然数,需进一步判断是否满足质数条件。
【输入格式】
第一行包含两个整数 n 和 m,分别表示数组的长度和查询的次数。
第二行包含 n 个整数,依次表示数组 a 的元素 a1,a2,…,an(元素间用空格分隔)。
接下来 m 行,每行包含两个整数 l 和 r,分别表示一次查询的区间左右端点。
【输出格式】
共输出 m 行,每行对应一次查询的结果:
- 若区间和为质数,输出
"Yes";
- 否则,输出
"No"。
【样例输入】
5 3
2 3 5 7 11
1 1
2 3
1 5
【样例输出】
Yes
No
No
【样例解释】
- 第一次查询:区间 [1,1] 的和为 2。2 是大于 1 的自然数,且仅能被 1 和自身整除,故输出
"Yes";
- 第二次查询:区间 [2,3] 的和为 3+5=8。8 可被 2、4 整除,故输出
"No";
- 第三次查询:区间 [1,5] 的和为 2+3+5+7+11=28。28 可被 2、4、7、14 整除,故输出
"No"。
【数据范围与测试点分布】
| 分数占比 |
变量 |
具体范围 |
| 10% |
n |
1≤n≤100 |
|
m |
1≤m≤100 |
| a[i] |
−10≤a[i]≤103 |
| l,r |
1≤l≤r≤n |
| 30% |
n |
1≤n≤1000 |
|
m |
1≤m≤1000 |
| a[i] |
−103≤a[i]≤10 |
| l,r |
1≤l≤r≤n |
| 60% |
n |
1≤n≤104 |
|
m |
1≤m≤104 |
| a[i] |
−10≤a[i]≤10 |
| l,r |
1≤l≤r≤n |
| 80% |
n |
1≤n≤5×104 |
|
m |
1≤m≤5×104 |
| a[i] |
−10≤a[i]≤10 |
| l,r |
1≤l≤r≤n |
| 100% |
n |
1≤n≤105 |
|
m |
1≤m≤105 |
| a[i] |
−10≤a[i]≤10 |
| l,r |
1≤l≤r≤n |