2009~2014/C/C++

[C언어 기출문제&풀이] 3n+1 문제

malu 2010. 7. 15. 17:45
정수를 입력으로 받아,
  • 짝수이면 2 로 나누고 , 홀수이면 3 배해서 1 을 더함
  • 1 이 될 때 까지 반복

6 이 입력으로 주어지면

6 3 10 5 16 8 4 2 1

입력

1000 이하의 자연수가 입력으로 주어진다.

출력

공백 한자리로 수를 구분한다.

입출력 예

입력

4

출력

4 2 1

입력

6

출력

6 3 10 5 16 8 4 2 1

풀이 : 문제의 조건대로 짝수면 2로 나누고 홀수면  3배해서 1을 더하는 루프를 코딩한다. 

소스파일
------------------------------------------------------------- 

01 #include <stdio.h>
02   
03 int main()
04 {
05     int n;
06     scanf("%d",&n);
07     for(;;)
08     {
09         printf("%d ",n);
10         if(n==1)
11             break;
12         if((n%2)==0)
13             n=n/2;
14         else if((n%2)!=0)
15             n=n*3+1;
16     }
17 }

------------------------------------------------------------