#zSybttg060201. 1619:【例 1】Prime Distance
1619:【例 1】Prime Distance
1619:【例 1】Prime Distance
题目描述
给定两个整数 ,求闭区间 中相邻两个质数差值最小的数对与差值最大的数对。当存在多个时,输出靠前的素数对。
输入格式
多组数据。每行两个数 。
输出格式
对于每组数据,如果区间内存在至少两个质数,则输出两行:
- 第一行:
最小差值素数对are closest,最大差值素数对are most distant. - 第二行:如果区间内质数少于两个,输出
There are no adjacent primes.
具体格式见样例。
样例
样例输入 #1
2 17
14 17
样例输出 #1
2,3 are closest, 7,11 are most distant.
There are no adjacent primes.
样例解释 #1
第一组数据:,区间内的质数有:。
- 相邻质数差值:
- 和 差
- 和 差
- 和 差
- 和 差
- 和 差
- 和 差
- 最小差值为 ,对应的质数对是 。
- 最大差值为 ,对应的质数对是 (因为 差值也是 ,但 靠前)。
- 输出:
2,3 are closest, 7,11 are most distant.
第二组数据:,区间内的质数只有 ( 不是质数),所以少于两个质数,输出 There are no adjacent primes.
数据范围
对于全部数据:
时空限制
- 时间限制:1000 ms
- 内存限制:524288 KB
注意:本题需要高效地找出区间 内的所有质数。由于 可能很大(接近 ),不能直接筛到 。但区间长度不超过 ,因此可以使用区间筛法(Segmented Sieve):
- 先用线性筛或埃氏筛筛出 以内的所有质数(因为 ,)。
- 然后用这些质数去标记区间 内的合数。
- 最后遍历 收集所有质数,并计算相邻质数的差值。
注意点:
- 可能为 ,但 不是质数。
- 需要使用
long long类型,因为中间计算可能会超出int范围。 - 多组数据输入,直到文件结束。
- 输出格式要严格符合样例,注意标点符号和空格。