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 |
댓글