1.1编码实现
#include<iostream>
#include<cmath>
using namespace std;
bool isPrime(int x)
{
if(x < 2) return false;
for(int i = 2; i <= sqrt(x); i++)
{
if(x % i == 0)
return false;
}
return true;
}
int Yinzi(long long y,int factor[200])
{
int j;
int p = 0;
for(j=2;j<200;j++)
{
if(isPrime(j))
{
while(y%j == 0)
{
y /= j;
factor[j]++;
p = j;
}
}
}
return factor[p];
}
int main()
{
int q;
cin>>q;
for(int i=1;i<=q;i++)
{
long long n;
int k;
cin>>n>>k;
int factor[200] = {0};
Yinzi(n,factor);
long long t = 1;
for(int j=2;j<200;j++)
{
if(isPrime(j) && factor[j]>=k)
{
t *= pow(j,factor[j]);
}
}
cout<<t<<endl;
}
}
1.2 提交结果