문제 요약
함수 \( f(n) \)을 다음과 같이 정의하자$${\displaystyle f(n)={\begin{cases}n/2&{\text{if }}n\equiv 0{\pmod {2}}\\3n+1&{\text{if }}n\equiv 1{\pmod {2}}.\end{cases}}}$$
모든 자연수 n에 대하여 \( f(f(f(...f(n)))) \) 이 항상 1이 되는 순간이 있는지가 콜라츠 추측이다. 아직 이 문제는 미해결 난제로 남아있다.
문제에선 n이 1이 되는 과정을 출력하면 된다.
문제 풀이
반복문을 통하여 변수를 계속 변화시키다가 1이 되는 시점이 오면 종료한다.소스코드 (C++)
#include <iostream> using namespace std; int main() { int n; cin >> n; while(n != 1) { cout << n << ' '; n = (n % 2 == 0) ? n/2 : 3*n+1; } cout << 1 << '\n'; return 0; }
소스코드 (Python2)
n = int(raw_input()) while n != 1: print n, if n % 2 == 0: n /= 2 else: n = 3*n+1 print 1
소스코드 (아희)
삭밣밣밣붏 우더더더어 해 아방빵망빵반밧나타추 오퍼 누번 우 콜 뫃 우추러번뻥 라추 뽀 우붇 츠측 포어어뚜 도터벗벋
댓글 없음:
댓글 쓰기