풀이
소수를 저장 할 N+1개의 boolean배열을 만들어 2부터 N개까지 true로 세팅시켜준 후 이중 for문을 통해 2부터 차례대로 N까지의 배수자리의 배열을 false로 만들어주며 제거시켜주는데 이 때 제거 시 count를 세어 K값이 되었을 때 출력후 종료시킨다. (종료시키는 이유는 끝까지 돌면서 배열을 지울 시간을 쓸 필요가 없기 때문)
소스코드
public class Baekjoon2960_PrimeNum {
static public void main(String args[]) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
boolean[] primeNum = new boolean[N+1];
int count = 0;
for(int i = 2; i <= N; i++) {
primeNum[i] = true;
}
for(int i = 2; i <= N; i++) {
for(int j = i; j <= N; j += i) {
if(!primeNum[j])
continue;
primeNum[j] = false;
count ++;
if(count == K) {
System.out.println(j);
System.exit(0);
}
}
}
}
}