#P3518. Prime Gap
Prime Gap
题目描述(Description)
若两个连续素数 $p$ 和 $p + n$ 之间存在 $n - 1$ 个连续的合数(即大于 $1$ 且不是素数的正整数),则称这一段合数组成了一个长度为 $n$ 的素数间隙(prime gap)。
例如,$23$ 和 $29$ 之间的数列 <24, 25, 26, 27, 28>
是 $5$ 个连续合数,因此称为长度为 $6$ 的素数间隙。
你的任务是编写程序,对于给定的正整数 $k$,计算包含该数的素数间隙的长度。如果 $k$ 是素数(即它本身是间隙的边界之一),则其结果定义为 $0$。
输入格式(Input)
输入由若干行组成,每一行包含一个正整数。 每个输入的正整数 $k$ 满足:$1 < k \leq 1299709$(其中 $1299709$ 是第 $100000$ 个素数)。 输入以一行单独的数字 $0$ 结束。
输出格式(Output)
对于输入的每一个正整数 $k$,输出一行,表示包含该数的素数间隙的长度:
- 如果 $k$ 是合数,则输出该合数所在的素数间隙的长度(即两个最近的素数之差)。
- 如果 $k$ 是素数,则输出 $0$。
每行仅输出一个非负整数,不应包含任何其他字符。
输入样例
10
11
27
2
492170
0
输出样例
4
0
6
0
114
样例说明
10
是合数,位于素数7
和11
之间,间隔长度为11 - 7 = 4
11
是素数,输出0
27
是合数,位于素数23
和29
之间,间隔长度为6
2
是素数,输出0
492170
是合数,位于素数492113
和492227
之间,间隔长度为114