#include <bits/stdc++.h> #define ll long long int #define pb push_back #define mp make_pair #define mod 1000000007 #define vl vector <ll> #define all(c) (c).begin(),(c).end() using namespace std; long long readInt(long long l,long long r,char endd){ long long x=0; int cnt=0; int fi=-1; bool is_neg=false; while(true){ char g=getchar(); if(g=='-'){ assert(fi==-1); is_neg=true; continue; } if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(fi!=0 || cnt==1); assert(fi!=0 || is_neg==false); assert(!(cnt>19 || ( cnt==19 && fi>1) )); } else if(g==endd){ if(is_neg){ x= -x; } if(!(l <= x && x <= r)) { cerr << l << ' ' << r << ' ' << x << '\n'; assert(1 == 0); } return x; } else { assert(false); } } } string readString(int l,int r,char endd){ string ret=""; int cnt=0; while(true){ char g=getchar(); assert(g!=-1); if(g==endd){ break; } cnt++; ret+=g; } assert(l<=cnt && cnt<=r); return ret; } long long readIntSp(long long l,long long r){ return readInt(l,r,' '); } long long readIntLn(long long l,long long r){ return readInt(l,r,'\n'); } string readStringLn(int l,int r){ return readString(l,r,'\n'); } string readStringSp(int l,int r){ return readString(l,r,' '); } const int MAXT = 100000; const int MAXN = 1000000; int p[MAXN + 7]; vector<int> pr; void seive() { for(int i = 2; i <= MAXN; i++) { if(p[i]) continue; pr.push_back(i); for(int j = i*2; j <= MAXN; j+=i) p[j] = 1; } } void solve() { int a = readInt(1,MAXN,' '); int b = readInt(1,MAXN,'\n'); vector<pair<int, int>> aa,bb; int cur = 0; int prime = pr[cur]; while(prime*prime <= a) { int cnt = 0; while(a%prime == 0) a/=prime, cnt++; if(cnt) aa.push_back({prime, cnt}); cur++; prime = pr[cur]; } if(a > 1) aa.push_back({a, 1}); cur = 0; prime = pr[cur]; while(prime*prime <= b) { int cnt = 0; while(b%prime == 0) b/=prime, cnt++; if(cnt) bb.push_back({prime, cnt}); cur++; prime = pr[cur]; } if(b > 1) bb.push_back({b, 1}); int bad = 0; if(aa.size() != bb.size()) bad = 1; for(int i = 0; i < aa.size(); i++) { if(aa[i].first != bb[i].first) { bad = 1; break; } if(aa[0].second*bb[i].second != aa[i].second*bb[0].second) { bad = 1; break; } } if(bad) cout << "NO\n"; else cout << "YES\n"; } int main() { //ios_base::sync_with_stdio(false); //cin.tie(NULL),cout.tie(NULL); seive(); int T=readInt(1,MAXT,'\n'); while(T--) solve(); assert(getchar()==-1); cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n"; }