N, index = map(int, input().split())
cnt = 0
for i in range(1, (N // 2) + 1): ------ (A)
if (N % i == 0):
cnt += 1
if (cnt == index):
print(i)
break
if (cnt + 1 == index):
print(N)
elif (cnt < index):
print(0)
리스트를 만들어서 값들을 넣은 후, index에 해당하는 값을 꺼내려다가
불필요해보여서 한번 for문 돌면서 접근하는대로 print하도록 구현
자기 자신을 약수로 두는 점을 예외처리 못했다.
15번 줄 cnt+1 == index인 경우가 자기 자신인 경우이다.
위 코드에서 (A) 부분에 아래와 같이 변경.
for i in range(1, math.ceil(math.sqrt(N)) + 1):
이렇게 풀면, 조금 더 연산 시간을 줄일 수 있다.
N의 약수는 N^0.5의 올림까지만 적용해보면 된다.
math.ceil -> 올림 , math.sqrt -> 루트(^0.5)
단, import math 해야한다.