给定两个整数 n 和 k,请你找到并输出能够整除 n 的第 k 小的正整数。
输入格式
一行,两个整数 n 和 k。
输出格式
输出能够整除 n 的第 k 小的整数。
如果不存在,则输出 −1。
数据范围
1≤n≤1015,
1≤k≤109。
输入样例1:
4 2
输出样例1:
2
输入样例2:
5 3
输出样例2:
-1
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
long long n,k;
cin>>n>>k;
int i;
vector<long long> v;
for (i = 1; i <= sqrt(n); i ++ ){
if(n%i==0){
v.push_back(i);
if(n/i!=i){
v.push_back(n/i);
}
}
}
sort(v.begin(),v.end());
if(v.size()>=k){
cout<<v[k-1]<<endl;
}
else{
cout<<-1<<endl;
}
return 0;
}