코딩테스트 문제를 풀다보면 어떤 수의 모든 약수를 구해야 할 때가 있다.
아주 간단하게 어떤 수의 약수를 구하는 알고리즘을 알아보자.추가로, 약수를 정렬된 순서로 리턴까지 해보자.
숫자 n의 약수를 구하는 알고리즘을 소개하면 다음과 같다.(시간 복잡도:$O(\sqrt{n})$)
- 1 ~ $\sqrt{n}$의 범위안에 드는 자연수 i를 대상으로 루프를 돈다.
- 만약 n이 i로 나누어 떨어진다면, i와 n을 i로 나눈 값은 n의 약수이다.
이를 코드로 나타내면 다음과 같다.
x = 100
divisor_set = set()
for divisor in range(1, int(x**0.5) + 1):
if x % divisor == 0:
divisor_set |= {divisor, x // divisor}
print(divisor_set)
'파이썬 > 파이썬 문법(심화)' 카테고리의 다른 글
[WIP]대한민국에서 가장 자세한 f-string 가이드 (0) | 2023.05.26 |
---|---|
[잡지식] 문자열 연결에 "+"를 사용하지 마세요! (0) | 2023.02.19 |
2진수로 표현한 숫자의 1의 개수 세기. (0) | 2022.10.27 |
2차원 리스트를 회전시키기 (0) | 2022.10.25 |
0으로 초기화된 2-차원 리스트 생성하기. (0) | 2022.06.28 |