본문 바로가기
My Image
Algorithm/Programmers

[Algorithm] 콜라츠(Collatz) 추측

by Lim-Ky 2017. 10. 4.
반응형

Programmers Level_02


콜라츠(Collatz) 추측


1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.


package Programmers_Level02;
package Programmers_Level02;

public class Collatz {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Collatz c = new Collatz();
		int ex = 626331;
		System.out.println(c.collatz(ex));
	}
	
	public int collatz(int num) {
		Double answer = (double)num;
		int n=0;
		while(true){
			
		if(answer%2==0){
			//홀수
			answer = answer/2;
		//	System.out.print(answer+" ");
		}else{
			//짝수
			answer = (answer*3)+1;
		//	System.out.print(answer+" ");
		}
			n++;
			if(answer==1)return n;
			if(n>=500) return -1;
		}
	}

}





반응형

'Algorithm > Programmers' 카테고리의 다른 글

[Algorithm] 행렬의 곱셈 (ProductMatrix)  (0) 2017.10.04
[Algorithm] 소수 찾기 (NumberOfPrime )  (0) 2017.10.04
[Algorithm] 하샤드(Harshad) 수  (0) 2017.10.04
[Algorithm] 2016년  (0) 2017.10.04
[Algorithm] 최솟값 만들기  (0) 2017.10.04

댓글