콜 라 즈 가 추측 한 변형

콜 라 즈 는 수학 적 으로 풀 리 지 않 는 수수께끼 라 고 추측 했다.
콜 라 즈 는 자연수 n 순환 에 대해 다음 과 같은 조작 을 수행 할 것 이 라 고 추측 했다.
  • n 이 짝수 일 때 n 으로 2
  • 를 나눈다.
  • n 이 홀수 일 때 n 곱 하기 3 에 1 을 더 하면 초기 값 이 어떤 숫자 든 최종 적 으로 1 (1 → 4 → 2 → 1 순환 에 들 어 갑 니 다) 을 얻 을 수 있 습 니 다.

  • 여기 서 우 리 는 이 추측 내용 을 약간 수정 합 니 다. 즉, 초기 값 이 짝수 라 고 가정 할 때 n 곱 하기 3 에 1 을 추가 하지만 처음 이렇게 조작 할 뿐 뒤의 순환 작업 은 변 하지 않 습 니 다.우리 가 고려 해 야 할 것 은 이 조건 에서 결국 초기 값 으로 돌아 갈 수 있 는 수 이다.예 를 들 어 2 를 초기 값 으로 하면 계산 과정 은 다음 과 같다.2 건 → 곤 7 건 → → 곤 22 건 → 곤 11 건 → 곤 11 건 → 곤 34 건 → 곤 17 건 → 곤 17 건 → 곤 52 건 → 곤 52 건 → 곤 26 건 → 곤 13 건 → 곤 13 건 → 곤 13 건 → 곤 40 건 → 곤 40 건 → 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 13 건 13 건 → 곤 13 → 곤 13 건 → 곤 40 건 → 곤 40 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 5 건 5 건 → 곤 5 건 5 건 5 건 → 곤 5 건 5 건 → 곤 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 20 건 → 곤 10 건 → 곤 10 건 → 곤 곤 5 건 5 건 5 건 5 건 → 곤 곤 5 건 → 곤 곤 곤 곤 20 건 → → 곤 20 건 → 곤 20 건 → 곤 20 건 → → → 곤 20 건 → → → 16   →   8   →   4   →   2 와 마찬가지 로 초기 값 이 4 라면 계산 과정 은 다음 과 같다.4   →   13   →   40   →   20   →   10   →   5   →   16   → 8   →   4 그러나 초기 값 이 6 이면 계산 과정 은 다음 과 같 고 초기 값 6 으로 돌아 갈 수 없다.6 → 19 → 58 → 29 → 88 → 44 → 22 → 11 → 34 → 17 → 52 → 26 → 13 →40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → 4 → …
    문 제 는 10000 이하 의 짝수 중에서 상기 2 또는 4 와 같이 '초기 값 으로 돌아 갈 수 있 는 수' 가 몇 개 있 는 지 를 요구한다.
    package main
    
    import "fmt"
    
    func collatz(n int)bool{
        m := n * 3 + 1
        for{
            if m == 1{
                return false
            }else if m == n{
                return true
            }
    
            if m % 2 == 1{
                m = m * 3 + 1
            }else if m % 2 == 0{
                m = m / 2
            }
        }
    }
    
    func main(){
        var s []int
        for i:=2;i<10001;i+=2{
            if collatz(i){
                s = append(s, i)
            }
        }
        fmt.Println(s)
        fmt.Printf("  %d   
    ", len(s)) }

    결과:
    [2 4 8 10 14 16 20 22 26 40 44 52 106 184 206 244 274 322 526 650 668 790 866 976 1154 1300 1438 1732 1780 1822 2308 2734 3238 7288]
      34   

    원래 재 귀 함수 로 귀 찮 은 것 을 발견 하고 for 순환 을 사 용 했 는데 쉽게 해결 되 었 습 니 다. 순환 하 는 조건 디자인 에 만 주의 하면 됩 니 다.

    좋은 웹페이지 즐겨찾기