문제는 두수 a,b를 입력해서 a와b 사이에 숫자를 호수일경우 3n+1을하고 짝수일 경우 n/2를 한다.
그래서 가장 큰 수를 뽑아내는 알고리즘이다.

<<<소스>>>
#include<stdio.h>
#include<stdlib.h>

void main()
{
 int i;
 int one,two;
 int max=0;
 int count=0;
 int n=0;

 printf("첫번째 : ");
 scanf("%d",&one);

 printf("두번째 : ");
 scanf("%d",&two);

 for(i=one;i<two;i++)
 {
  max=i;
  count=0;
  while(1)
  {   
   if(max==1)
   {
    break;
   }
   else if(max%2==0)//짝수
   {
    max/=2;
   }
   else//홀수
   {
    max=3*max+1;
   } 
   count++; 
  // printf("%d : %d\n",count,max);
  }  
  if(n<=count)
  {
   n=count;
  }
  
  printf("%d : %d\n",i,n);
 }
 printf("최대 횟수 : %d\n",n);
 scanf("%d",max);
}

+ Recent posts