에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.
이 알고리즘은 다음과 같다.
N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오.
첫째 줄에 N과 K가 주어진다. (1 ≤ K < N, max(1, K) < N ≤ 1000)
첫째 줄에 K번째 지워진 수를 출력한다.
내림차순으로 숫자 배열을 만들고, 가장 마지막 요소(최솟값)를 pop해준다.
pop()된 원소는 제외 순서를 저장할 리스트에 추가한다.
이제 제거된 원소의 배수들을 숫자배열에서 제거한다.
리스트 표현식을 사용해 p부터 n까지 p 간격으로 이동하면서 배수 배열을 생성한다.
배수 배열 안에서 배수가 숫자배열안에 아직 있으면 지워주고, 지워진 원소를 리스트에 추가해 준다.
리스트에는 제거 순서대로 숫자들이 담긴다. k-1번째 원소를 찾으면 끝
n, k = map(int, input().split())
arr = [i for i in reversed(range(2, n+1))]
stack = []
while arr:
p = arr.pop()
stack.append(p)
nums = [i for i in range(p, n+1, p)]
for num in nums:
if num in arr:
arr.remove(num)
stack.append(num)
print(stack[k-1])