Algorithm/Programmers
[Algorithm] 콜라츠(Collatz) 추측
Lim-Ky
2017. 10. 4. 01:11
반응형
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;
}
}
}
반응형