暴力做法:首先我们转换一下题意,要求存在至少X个质数可以整除A[l]~A[r]之间的所有数,等价于GCD(A[l], A[l + 1], A[l + 2], ..., A[r])存在至少X个不同的质因数。因此我们可以暴力枚举所有可能的数对(l, r),然后求出GCD(A[l], A[l + 1], A[l + 2], ..., A[r]),并对其进行质因数分解,如果存在至少X个不同的质因数,说明这是一个合法的数对。那么我们最后只需记录下所有合法的数对并排序,找到第K长的数对即可。 int GetKthLength(vector<int>& A, int X, int K) ...