用欧拉筛筛出 2e5 范围内的所有质数,再遍历质数数组判断是否满足题目要求即可

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int pr[N],minp[N],vis[N];
int cnt=0;
void ol(int x)
{
    for(int i=2;i<=x;i++)
    {
        if(!vis[i])
        {
            pr[cnt++]=i;
            minp[i]=i;
        }
        for(int j=0;j<cnt;j++)
        {
            if(pr[j]*i>x) break;
            vis[pr[j]*i]=1;
            minp[pr[j]*i]=pr[j];
            if(i%pr[j]==0) break;
        }
    }
}
int main(){
    int t; cin>>t;
    ol(N-10);
    while(t--){
        int x,y; cin>>x>>y;
        int l=min(x,y),r=max(x,y);
        int ans=-1;
        
        for(int i=0;i<=cnt;i++){
            int xx=gcd(x,pr[i]),yy=gcd(y,pr[i]);
            if(pr[i]>r) break;
            if(xx==1&&yy==1){
                ans=pr[i];
                break;
            }
        }
        cout<<ans<<endl;
    }
}