본문 바로가기
공부/Unity 기초

콜라츠 추측

by svcbn 2022. 5. 12.

콜라츠 추측이란 주어진 수 n이 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다.

 

1-1. 입력된 수가 짝수라면 2로 나눕니다.

1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.

2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.

 

위 작업을 몇 번 반복해야 1이 나오는지 Console 창에 출력하는 코드를 만들어보세요.

단, 100번을 반복해도 1이 되지 않는다면 -1을 출력해 주세요.

 

예) n = 6 이라면 3 -> 10 -> 5 -> 16  -> 8 -> 4 -> 2 -> 1 로 8번 반복합니다. 

 

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Collatz : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

        int n = 6;
        int answer = 0;

        // 1이 될 때까지 반복한다.
        for (int i = 0; i < 100; i++)
        {
            if (n == 1)
            {
                answer = i;
                break;
            }

            // 입력된 수가 짝수라면 2로 나눈다.
            if (n % 2 == 0)
            {
                n /= 2;
            }
                       
            // 입력된 수가 홀수라면 3을 곱하고 1을 더한다.
            else
            {
                n = n * 3 + 1;
            }

            // 100번 반복해도 1이 되지 않는다면 -1 출력.
            if (i == 99)
            {
                answer = -1;
            }


        }
               
        print(answer);
                     
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

'공부 > Unity 기초' 카테고리의 다른 글

문자열 나누기  (0) 2022.05.13
영단어 숫자 바꾸기  (0) 2022.05.12
제곱근 판별  (0) 2022.05.12
두 자연수 사이의 합 구하기  (0) 2022.05.12
약수의 합  (0) 2022.05.12