본문 바로가기
공부-코딩테스트/파이썬-코딩테스트-편의기능

약수 구하기

by 령과 2022. 2. 21.
def divisor(num):
    arr = []
    for i in range(1,int(num**(0.5))+1):
        if num % i == 0:
            arr.append(i)
            if i**2 != num:
                arr.append(num//i)
    return sorted(arr)

divisor(10) => 결과 [1,2,5,10]

n의 약수를 구할 때 n이하의 수를 전부 확인할 필요가 없다.

n의 제곱근 이하의 수에서 탐색을 하여 나누었을 때 나머지가 없는 값들이 약수라고 할 수 있으며 이 때 약수* x = num

이여야 하는데 x또한 약수가 될 것이기에 x도 arr에 추가한다. 단 num이 제곱으로 만들어지는 수일 경우

x가 중복해서 arr에 들어갈 수 있기 때문에 이러한 경우를 배제하고 arr를 만들어가는 식으로 구현한다.

'공부-코딩테스트 > 파이썬-코딩테스트-편의기능' 카테고리의 다른 글

heapq  (0) 2022.12.12
파이썬 format함수  (2) 2022.01.05
파이썬 dictionary 사용  (0) 2021.12.26
달팽이 배열 만들기 (재귀함수사용)  (0) 2021.12.26

댓글