1001 Yes, Prime Minister
解题思路
显然 r > 0*, r* ≥ l,如果 l ≤ 0,此时 [l, r] 区间和 = [[l + 1*, r*] 的区间和,且 r ≥ −**l + 1 > 0。
故对于任意一个区间,都可以找到一个对应的 r ≥ l > 0 的区间与之对应,区间和相同。
对于下式
当 l > 0 l > 0 l>0 时,若 r − l ≥ 2 r -l ≥ 2 r−l≥2,则$(l+r)/2 $ 和 ( r − l + 1 ) / 2 (r-l+1) /2 (r−l+1)/2之中必有一个是大于 1 的整数。区间和必然能被拆分成两个因数的乘积。所以这样的满足和为素数的区间长度必然不长于 2。
预处理出比 [ 2 , 2 × 1 0 7 ] [2, 2 × 10^7] [2,2×107]略大范围内的质数,埃氏筛或者线筛均可。
如果 x ≤ 0 x≤0 x≤0,则候选答案为:
• 最小的 y ( y ≥ 1 − x ) y(y ≥ 1-x) y(y≥1−x),满足 y y y 是质数,区间为 [ − y + 1 , y ] [ -y + 1, y] [−y+1,y]。
• 最小的 z ( z ≥ 2 − x ) z(z ≥ 2 -x) z(z≥2−x),满足 2 z − 1 2z -1 2z−1 是质数,区间为 [ − z + 2 , z ] [ -z + 2, z] [−z+2,z]。
如果 x > 0 x > 0 x>0,则候选答案为:
• [ x , x ] [x, x] [x,x]
• [ x , x + 1 ] [x, x + 1] [x,x+1]
• [ x − 1 , x ] [x -1, x] [x−1,x]
• 最小的 y ( y ≥ x ) y(y ≥ x) y(y≥x),满足 y y y是质数,区间为 [ y + 1 , y ] [ y + 1, y] [