import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int number = Integer.parseInt(st.nextToken());
int index = Integer.parseInt(st.nextToken()) - 1;
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
list.add(i);
if (number / i != i) list.add(number / i);
}
}
Collections.sort(list);
System.out.println(list.size() > index ? list.get(index) : "0");
}
}
약수를 구한 뒤 약수 중 K
번 째 작은수를 출력하는 문제이다.
약수는 기존처럼 제곱근을 이용해 구해주었다.
그리고 오름차순으로 정렬한 뒤에 K
번째 작은 수는 인덱스 상에서는 K-1
번인것을 고려하여 리스트의 사이즈와 비교한 뒤 적절한 값을 출력하도록 하는 문제이다.