달력

4

« 2024/4 »

  • 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
2007. 9. 12. 10:57

[JavaQuiz] 3n+1 그거/Java2007. 9. 12. 10:57

/**
 *
 * @(#) ThreeNPlusOne.java
 * created date : 2007. 09. 04
 *
 * (c) Copyright by Youbok, Choi.,
 * All rights reserved.

 */
package ybchoi.quiz;

import java.util.ArrayList;

/**
 * 자연수 n을 하나 받아서 짝수면 2로 나누고 홀수면 3*n+1을 합니다.
 * 이 과정을 n이 1이 될때까지 반복하고 그 과정을 리스트로 돌려줍니다.
 *
 * @author Youbok, Choi
 * @version 1.0
 *
 */
public class ThreeNPlusOne {
 
 public void doIt(String arg) {
  int number = 0;

  try {
   number = Integer.parseInt(arg);
  } catch(NumberFormatException e) {
   number = 100;
  }
 
  ArrayList result = getList(number);
  for(int i = 0 ; i < result.size(); i ++ ) {
   if( i != 0 ) System.out.print(", ");
   System.out.print(result.get(i));
  }
 }
 
 private boolean isOdd(int number) {
  return number % 2 == 1;
 }
 
 private ArrayList getList(int number) {
  ArrayList tmp = new ArrayList();
  tmp.add(new Integer(number));
 
  do {
      // 홀수인지 짝수인지 체크
      number = isOdd(number) ? (number * 3 + 1) : (number / 2) ;
     
//      System.out.println(number);
//      try { Thread.sleep(1000); } catch(Exception ignr) {}
      tmp.add(new Integer(number));
  } while( number != 1 );
 
  return tmp;
 }
 
 public static void main(String[] args) {
  ThreeNPlusOne tnpo = new ThreeNPlusOne();
  tnpo.doIt("44");
 }
}

:
Posted by 뽀기