티스토리 뷰

📌문제

어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 

6을 예로 들면

  • 6 ÷ 1 = 6 … 0
  • 6 ÷ 2 = 3 … 0
  • 6 ÷ 3 = 2 … 0
  • 6 ÷ 4 = 1 … 2
  • 6 ÷ 5 = 1 … 1
  • 6 ÷ 6 = 1 … 0

그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

 

📌풀이

1부터 n까지 반복문을 돌리면서 n을 나누었을 때 나누어 떨어지는 수를 찾음

찾은 약수의 개수를 세고 만약 k개를 찾았다면 출력

만약 반복문 정상종료 후에도 k번째 약수를 찾지 못했다면(N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우) 0 출력

 

📌코드

n, k = map(int, input().split())
cnt = 0
for i in range(1, n + 1):
    if n % i == 0:
        cnt += 1
        if cnt == k:
            print(i)
            break
else:
    print(0)

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함