一、题目
计算机软件能力认证考试系统
二、题解
#include<bits/stdc++.h>
using namespace std;
//判断素数
int isPrime(int x) {
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) {
return 0;
}
}
return 1;
}
void query(long long n, int k) {
long long temp = n;
long long final = 1;
for(int i=2; i * i <= n; i++) {
if(isPrime(i)){
int num = 0;
while(n%i==0){
n/=i;
num++;
}
// printf("%d\n", num);
if(num>=k){
while(num--){
final*=i;
}
}
}
}
if(final==temp){
printf("%lld\n", temp);
}else if(final==1){
printf("1\n");
}else{
printf("%lld\n", final);
}
}
int main() {
int q;
scanf("%d", &q);
for(int i=0; i<q; i++) {
long long n;
int k;
scanf("%lld%d", &n, &k);
query(n, k);
}
return 0;
}