给你 x 和 y,问第 x 个质数和第 y 个质数的异或值是否为 1。
怎么样的两个数异或值为 1 呢?显然是二进制下只有末尾不同的数,要满足这个条件,需要两数奇偶性不同(思考这个条件是因为考虑到质数特殊的奇偶性质),则两个质数为一奇一偶。
偶数中只有 2 是质数,而易知在其它质数中,只有 3 和 2 的异或值为 1。最终得到:两个质数只能是 3 和 2。
3 是第 22个质数,2 是第一个质数,则 x 和 y 为 2 和 1。注意两数可能调换位置。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin >> T;
for(int i = 1; i <= T; i ++)
{
int a,b;
cin >> a >> b;
if(a + b == 3) cout << "Yes"; //1 、2 或者 2 、 1
else cout << "No";
if(i != T) cout <<'\n';
}
return 0;
}