안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
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까지 도달하는데
가장 긴 과정을 거치는 숫자는 얼마입니까?
* 계산 과정 도중에는 숫자가 백만을 넘어가도 괜찮습니다.
public class Question14 {
public static void main(String[] args) {
int startNum = 2;
long hailNum = 0, hailNum2 = 0,maxNum = 0;
int count = 0, count2 = 0, max = 0;
for (int i = 11; i < 999999; i++) {
hailNum = startNum + i;
count = 0;
hailNum2 = hailNum;
while (hailNum > 1) {
if (hailNum % 2 == 0) {
hailNum /= 2;
count++;
} else {
hailNum = (hailNum * 3) + 1;
count++;
}
count2 = count;
}
if(max < count2){
max = count2;
maxNum = hailNum2;
}
}
System.out.println(maxNum);
}
}
'알고리즘,손코딩 문제' 카테고리의 다른 글
프로젝트 오일러 문제 9 : a + b + c = 1000 인 피타고라스 수 a, b, c는 한 가지 뿐입니다. 이 때, a × b × c 는 얼마입니까? (0) | 2017.03.11 |
---|---|
프로젝트 오일러 문제 8 : 이렇게 구할 수 있는 5자리 숫자의 곱 중에서 가장 큰 값은 얼마입니까? (0) | 2017.03.11 |
프로젝트 오일러 문제 13 : 아래에 50자리 숫자가 100개 있습니다. 이것을 모두 더한 값의 첫 10자리는 얼마입니까? (0) | 2017.03.11 |
프로젝트 오일러 문제 4 : 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? (0) | 2017.03.11 |
프로젝트 오일러 문제 16 : 2^1000의 각 자리수를 모두 더하면 얼마입니까? (0) | 2017.03.11 |