약수 구하기
약수를 구할 때는 제곱근의 반복문을 생각한다.
제곱근은 i*i <N 혹은 Math.sqrt()(double타입임) 2가지 방식으로 구할 수 있다.
반복문으로 나머지가 0인 경우로 절반의 약수를 구하고, 이를 바탕으로 나머지 절반을 구한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
ArrayList<Integer> list = new ArrayList<>();
for(int i=1; i * i <N; i++) {
if(N%i==0) {
list.add(i);
if(i*i != N) { // 완전 제곱수 중복 방지
list.add(N/i);
}
}
}
Collections.sort(list); // 정렬하기
if(list.size() < K) {
bw.write("0");
} else {
bw.write(list.get(K-1)+"");
}
bw.flush();
bw.close();
br.close();
}
}
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int count = 0;
for(int i=1; i<=N; i++) {
if(N%i==0) {
count ++;
if(count == K) bw.write(i+"");
}
}
if(count < K) bw.write("0");
bw.flush();
bw.close();
br.close();
}
}