티스토리 뷰
양의 정수 n에 대하여, 다음과 같은 계산 과정을 반복하기로 합니다.
n → n / 2 (n이 짝수일 때)
n → 3 n + 1 (n이 홀수일 때)
13에 대하여 위의 규칙을 적용해보면 아래처럼 10번의 과정을 통해 1이 됩니다.
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1
아직 증명은 되지 않았지만, 이런 과정을 거치면 어떤 수로 시작해도 마지막에는 1로 끝나리라 생각됩니다.
(역주: 이것은 콜라츠 추측 Collatz Conjecture이라고 하며, 이런 수들을 우박수 hailstone sequence라 부르기도 합니다)
그러면, 백만(1,000,000) 이하의 수로 시작했을 때 1까지 도달하는데 가장 긴 과정을 거치는 숫자는 얼마입니까?
참고: 계산 과정 도중에는 숫자가 백만을 넘어가도 괜찮습니다.
#include <stdio.h>
int main (void){
int count; int i;
int max_count = 0;
long long num = 0ll;
int max_value;
for(i =1000000; i > 1; i--){
count = 0;
num = (long long)i;
while ( num !=1ll ){
if( (num % 2ll) == 0ll)
num /= 2ll;
else
num = (num * 3ll) +1ll;
count++;
}
if(max_count < count){
max_count = count;
max_value = i;
}
}
printf("%d\n",max_count );
return 0;
}
'알고리즘 > 오일러 프로젝트' 카테고리의 다른 글
오일러 프로젝트 13번 (0) | 2016.05.19 |
---|---|
오일러 프로젝트 16번 (0) | 2016.05.06 |
오일러 프로젝트 12번 (0) | 2016.04.23 |
오일러 프로젝트 11번 (0) | 2016.04.23 |
오일러 프로젝트 10번 (0) | 2016.04.22 |
- Total
- Today
- Yesterday
- tipssoft
- 허프만 알고리즘
- arp
- TIPS강좌
- 실행 압축
- 패킷
- Omok
- 오일러 프로젝트 8번
- 오일러 프로젝트 13
- CBrush
- 오일러 프로젝트 12번
- 2의 1000승
- 오일러 프로젝트 16번
- 화투이미지맞추기
- MFC
- 오일러 프로젝트 10본
- 오일러 프로젝트 14번
- 오일러 프로젝트 11번
- 서버
- 팁스강좌
- 키보드 메시지 이벤트
- Tips
- 비손실 압축
- 헤더
- 와이어샤크
- tipsoft
- tipsr강좌
- 오일러
- 이미지게임
- 약수 500개
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |