Codeforces Round 827 (Div. 4) D
题目链接:
https://codeforces.com/contest/1742/problem/D
给定一个由 n个正整数 a1,a2,…,an(1≤ai≤1000)组成的数组。求i+j的最大值,使得ai和aj共质,否则−1,如果不存在这样的i,j。
例如,考虑数组 [1,3,5,2,4,7,7]。由于a5=4和a7=7是共素数,所以能得到的i+j的最大值是5+7。
如果两个整数 p 和 q 的唯一被除数是 1 (即它们的【最大公约数】那么这两个整数 p 和 q 是【共素数】
**输入**
输入由多个测试用例组成。第一行包含一个整数 t(1< t <10)--测试用例的数量。测试用例说明如下。
每个测试用例的第一行包含一个整数 $n$(2 < n ,q < 2*10^5)--数组的长度。
下一行包含 n个空格分隔的正整数 a_1, a_2,..., a_n(1 保证所有测试用例的 n之和不超过 2*10^5。 **输出** 对于每个测试案例,输出一个整数 i + j的最大值,使得i和j满足a_i和a_j是共素数的条件,或者在没有i、j满足条件的情况下输出-1。 **注** 对于第一个测试案例,我们可以选择指数之和等于 6的 i = j = 3,因为 1和 1是共素数。 对于第二种检验情况,我们可以选择 i = 7和 j = 5,指数之和等于 7 + 5 = 12,因为 7和 4是共素数。 思想:双重遍历n肯定会超时,除了二分,我们考虑遍历ai,ai的范围是1000,考虑ai是否存在,然后进行计算。 代码: