어떤정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한다음 1을 더한다. 

이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될때까지 같은 작업을 계속 반복한다.

n이라는 값이 입력되었을 때 1이 나올때까지 만들어진 수의 개수(1포함)를 n의 사이클 길이라고 함

i, j라는 수가 입력되면 i, j사이의 모든수에 대해 최대 사이클 길이를 구하라.


/* The 3n+1 Problem


#include <stdio.h>

int main()

{

int lbound=0, ubound=0, temp=0, i=0, num=0, max_length=0, length=0;


while(printf("Enter the two number : ") && scanf("%d %d", &lbound, &ubound) == 2) {

/* lbound가ubound보다크면swap */

if(lbound>ubound) {

temp = lbound;

lbound = ubound;

ubound = temp;

}

max_length = 0;

for(i=lbound; i<=ubound; i++) {

num = i;

length = 1;

while(num!=1) {

if(num%2 == 1) {

num = 3*num + 1;

length++;

}

else{

num /= 2;

length++;

}

}

if(length > max_length)

max_length = length;

}

printf("Input : %d %d \t Max_length : %d \n\n", lbound, ubound, max_length);

}

return 0;

}