#include<iostream>
#include <math.h>
using namespace std;int number[100000000]={0};
int main()
{
int q;long long n,k;int t=2;
cin>>q;
while (q--)
{
for(int i=0;i<100000000;i++)
number[i]=0;
cin>>n>>k; /* code */
while (n!=1)
if (n%t==0)
{
number[t]++;
n=n/t;
}
else {t++;}
int result=1;
for(int m=2;m<100000000;m++)
{
if(number[m]>=k) result=pow(m,number[m]);
}
std::cout<<result<<endl;}
}
#个人感觉本题的难度在于看懂题目要干啥,我就看了半天才懂好像是个寻找区间内的可行的素数乘积