• programming language/python
[파이썬 실력 테스트] 11. 약수구하기
oujin
2022. 8. 18. 12:07
728x90
●문제:
양의 정수 n을 입력한다.
양의 정수 n의 약수가 담긴 리스트를 출력한다.
def getMyDivisor(n):
divisorsList = []
for i in range(1, int(n**(1/2)) + 1):
if (n % i == 0):
divisorsList.append(i)
if ( (i**2) != n) :
divisorsList.append(n // i)
divisorsList.sort()
return divisorsList
n = int(input())
print(getMyDivisor(n))
10
[1, 2, 5, 10]
(ex. 10 = 2 * 5 )
N = A * B 로 나타낼 수 있다는 것을 이용한것입니다. (10 = 2 * 5 )
약수를 구하면 그 짝이 되는 수가 존재한다. (2,5)
for 문을 이용하여 N의 제곱근까지의 약수를 구하면 그 숫자의 짝이 되는 약수까지 구할 수 있게 됩니다.
하지만 N = A * B 일 때, A == B 일 수 있습니다. (ex. 4 = 2 * 2 )
따라서 값을 중복해서(2,2) 넣어주지 않기 위해
if 문으로 제곱했을 때 n이 되지 않는지 검사를 진행합니다. (i**2) != n
혹은 i != (n // i) 로 검사도 가능합니다.
마지막에 sort()로 오름차순으로 정렬을 해준 후 return 해주면 됩니다.
출처: 예제 중심 파이썬 입문
궁금한 부분이 있으면 댓글 부탁드립니다^^
728x90