算法分析
暴力 $ \sqrt{2 * 1e9} * 1e6 $
就是依次枚举每个数先判断是不是为质数,并记录下来在和后面和下一个素数比较距离大小。很显然超时。
优化 $1e6 * loglog1e6$
对于任何一个合数n来说,都很一定存在两个数$ x ( 2 <= x <= \sqrt{n}) $, $y ( \sqrt(n) <= y < n ) $
其中x一定能是n的最小质因数,那么这道题我们就可以先枚举出所有$ 2 ~ \sqrt{n}$ 的所有的质因数,然后再枚举所有l~r区间内的 每个$ 2 ~ \sqrt{n}$之间的倍数然后标记下,注意假如找p在l~R之间的最小倍数可以用 (l + p - 1) / p * p 就是最小倍数,当然要和2*p取一下max因为假如是p本身的话是素数, 最后把所有素数循环一遍找到答案。