#include #include #include #include #include #include #include using namespace std; #define ll long long const int maxn=1e5+10; /** 1. 找稳妥的方法? 2. 先做其它题? **/ //int a[] int main() { int n,i,x,y,z,cnt=0,vis_1,vis_2; //31622 // for (i=2;i<1000000;i++) // { // // } scanf("%d",&n); while (n--) { scanf("%d%d",&x,&y); if (x>y) swap(x,y); z=y-x; // for (i=2;i<=min(31622,z);i++) // if (z%i==0) // { // vis_1=i; // break; // } // // vis_1=-1; // for (i=2;i<=min(max(a,b),31622);i++) // if (x%i==y%i) // { // vis_1=i; // break; // } // // if () // // for (i=) /** 写清楚情况 vis_1更加不确定,多种情况 实在不行,打表 **/ if (z==0) z=x; vis_1=-1; for (i=2;i<=min(31622,z);i++) if (z%i==0) { vis_1=i; break; } if (z==1) { vis_1=vis_2=-1; } else if (i==min(31622,z)+1) { vis_1=vis_2=z; } // else if (i>min(x,y)) // { // vis_1=vis_2=-1; // } else { vis_2=z; } if (x==y && x!=-1) vis_1=2,vis_2=x; if (x==1 && y==1) vis_1=-1,vis_2=-1; // if (z==1) // vis_2=-1; // else if (z==0) // vis_2=x; // else // vis_2=z; // // vis_1=-1; // if (z==0) // z=x; // // for (i=2;i<=min(31622,z);i++) // if (z%i==0) // { // vis_1=i; // break; // } // if (z>31622) // vis_1=z; // if (z==0 || vis_1==-1) // vis_1=x; printf("%d %d\n",vis_1,vis_2); } return 0; } /** 5 13 52 1000000007 1000000007 1000000007 2000000014 1 100 6 100 2 2 2 3 2 4 2 10 2 11 1 100 31640 31642 6 2 3 4 6 14 64 114 514 1919 810 1000000007 1000000007 10000 10000000 **/