콜라츠 추측 (Collatz conjecture) 문제
글. 오상문 sualchi@daum.net
콜라츠 추측은 1937년에 제기한 로타르 콜라츠 이름을 딴 것이며
3n+1 추측, 울람 추측, 헤일스톤 수열 등으로도 불린다.
콜라츠 추측은 임의 자연수가 다음 단계를 거치다보면 늘 1이 된다는 것이다.
1. 짝수라면 2로 나눈다.
2. 홀수라면 3을 곱하고 1을 더한다.
3. 1이면 조작을 멈추고, 1이 아니면 첫 번째 단계로 돌아간다.
예제 코드는 다음과 같다.
# 어떤 양수 n이 1이 될 때까지 걸린 횟수
def solution(n):
answer = -1
for i in range(500):
if n==1:
return i
if n&1==0: n //= 2
else: n = 3*n + 1
return answer
#---------------------------------
for n in range(1,20):
print(n, ':', solution(n))
[실행 결과]
1 : 0
2 : 1
3 : 7
4 : 2
5 : 5
6 : 8
7 : 16
8 : 3
9 : 19
10 : 6
11 : 14
12 : 9
13 : 9
14 : 17
15 : 17
16 : 4
17 : 12
18 : 20
19 : 20
<이상>
반응형
'Python 기초' 카테고리의 다른 글
파이썬, 피보나치 수 구하기 (메모이제이션+재귀호출 방식) (0) | 2019.10.09 |
---|---|
파이썬, 하샤드 수인가 (0) | 2019.10.08 |
파이썬, 리스트 안의 자료를 모두 삭제하기 (0) | 2019.10.06 |
파이썬, 연속된 같은 숫자는 싫어 (0) | 2019.10.05 |
파이썬, 양의 정수 네자리 또는 여섯자리 검사 (0) | 2019.10.05 |