#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> primes;
vector<long long> res;
//写一个函数判断质数,存入一个数组。把数n除以每一个质数,如果能除尽,则index[num]++,直到不能除尽
//就退出循环。来除以下一个质数
void findPrime(){
primes.push_back(2);
bool flag = true;
for(int i = 3;i < 1000;i++){
for(int j = 2;j < i;j++){
if(i % j == 0){
flag = false;
}
}
if(flag){
primes.push_back(i);
}
flag = true;
}
}
int main(){
//准备好质数集合
findPrime();
//查询的个数q
int q;
//每行两个整数n,k
long long n;
int k;
cin>>q;
//q行每行一个n,k
for(int i = 0;i < q;i++){
int index[1000] = {0};
cin>>n>>k;
for(int num : primes){
while(n % num == 0){
index[num]++;
n /= num;
}
}
long long result = 1;
for(int j : primes){
if(index[j] >= k){
result *= pow(j,index[j]);
}
}
res.push_back(result);
}
//输出结果
for(int i = 0;i < res.size();i++){
cout<<res[i]<<endl;
}
return 0;
}
CCF23年12月第二题
最新推荐文章于 2024-09-07 16:56:49 发布