반응형
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 |
댓글