#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int>PII;
vector<PII> getprimes(ll n)
{
vector<PII>v;
for(ll i=2;i<=n/i;i++)
{
if(n%i==0)
{
int s=0;
while(n%i==0)
{
n/=i;
s++;
}
v.push_back({i,s});
}
}
if(n>1)v.push_back({n,1});
return v;
}
ll quickpow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)ans*=a;
a*=a;
b>>=1;
}
return ans;
}
void solve()
{
ll n;int k;
cin>>n>>k;
vector<PII>v=getprimes(n);
ll ans=1;
for(auto i:v)
{
if(i.second>=k)
{
ans*=quickpow(i.first,i.second);
}
}
cout<<ans<<endl;
}
int main()
{
int q;cin>>q;
while(q--)
{
solve();
}
}
大致思路是使用线性筛法先对该数进行质因数分解,然后幂小于题目要求的直接忽略,满足的搭配快速幂乘以ans。