题目大意:求出一个给定区间 [l, r] 内相邻素数之间的最大距离和最小距离. 题解:由于 l, r 的范围太大,没法直接用筛法得出区间的素数.考虑筛出区间的素数等价于筛掉区间内的所有和数, 根据算术基本定理,若 \(x\in [l,r]\) 为和数,则 x 一定有一个小于 \(\sqrt(r)\) 的质因子,利用这条性质可知,只需预处理出十万以内的所有素数,并用这些素数去筛掉给定区间的和数即可. 代码如下 #include <bits/stdc++.h> #define fi first #…