728x90
n,k=map(int,input().split())
prime=[False,False]+[True]*(n-1)
index,result = 0,0
for number, val in enumerate(prime):
if val:
for i in range(number,n+1,number):
if prime[i]:
prime[i]=False
index+=1
if index==k:
result = i
break
print(result)
에라토스테네스의 체를 사용할때 항상 앞에 false 두개를 넣고 시작한다.
index랑 실제 숫자랑 맞추면 생각하기 조금더 쉽기 때문이다
그리고 이문제는 조금 이상한게 prime을 구해야하는데 소수까지 제거해버린다.
힌트로 2, 4, 6, 8, 10, 3, 9, 5, 7 이렇게 지워진다고 되어있는데 소수는 남겨야하지 않나?
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1009 분산처리 (0) | 2021.02.03 |
---|---|
[백준] 2480 주사위 세개 (0) | 2021.02.03 |
[백준] 1032 명령프롬프트 (0) | 2021.02.03 |
[백준] 1268. 임시반장 구하기 (0) | 2021.02.02 |
[백준] 2941 크로아티아 알파벳 (0) | 2021.02.01 |