#include <bits/stdc++.h>
using namespace std;
int n;
vector<long long> sq(0);
bool ok(long long a, long long b) {
  long long pi = a * b;
  auto p = lower_bound(sq.begin(), sq.end(), pi);
  if ((p != sq.end()) && (*p == pi)) {
    long long val = p - sq.begin();
    if ((a % val == 0) && (b % val == 0)) return true;
    return false;
  }
  return false;
}
int main(void) {
  {
    long long i;
    for (i = 0; i <= 1000000; i++) {
      sq.push_back(i * i * i);
    }
  }
  scanf("%d", &n);
  for (int ttt = 0; ttt < n; ttt++) {
    long long a, b, pi;
    scanf("%I64d%I64d", &a, &b);
    pi = abs(a * b);
    printf(ok(a, b) ? "Yes\n" : "No\n");
  }
  return 0;
}
