공부-코딩테스트/파이썬-코딩테스트-편의기능
약수 구하기
령과
2022. 2. 21. 17:50
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를 만들어가는 식으로 구현한다.