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
'• programming language > python' 카테고리의 다른 글
[파이썬 실력 테스트] 13. 소수 판별하기, 특정숫자 소수 판별 (0) | 2022.08.18 |
---|---|
[파이썬 실력 테스트] 12. 3개의 숫자중 중간값 구하기 (0) | 2022.08.18 |
[파이썬 실력 테스트] 10. 사각형 면적 구하기 (0) | 2022.08.18 |
[파이썬 실력 테스트] 9. 최댓값 반환 (0) | 2022.08.18 |
[파이썬 실력 테스트] 8. 별찍기 (0) | 2022.08.17 |