cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A213198 Number of iterations of the map n -> f(f(f(...f(n)...))) to reach the end of the cycle, where f(n) = A006577(n), the initial number n is not counted.

Original entry on oeis.org

0, 1, 5, 2, 0, 7, 4, 6, 7, 8, 11, 8, 8, 10, 10, 3, 9, 6, 6, 5, 5, 11, 11, 9, 12, 9, 13, 7, 7, 7, 10, 1, 10, 9, 9, 6, 6, 6, 10, 7, 11, 7, 8, 4, 4, 4, 10, 12, 10, 10, 10, 12, 12, 7, 7, 7, 2, 7, 2, 7, 7, 15, 15, 8, 14, 14, 14, 11, 11, 11, 14, 12, 12, 12, 11, 12
Offset: 1

Views

Author

Michel Lagneau, Mar 01 2013

Keywords

Comments

A006577 is the number of halving and tripling steps to reach 1 in '3x+1' problem.
The end of the cycle is 1 or 5 for n = 5, 32, 57, 59, 344, 346, 348, 349, ...

Examples

			a(3) = 5 because the 5 iterations to reach 1 are A006577(3) = 7; A006577(7) = 16; A006577(16) = 4; A006577(4) = 2; A006577(2) = 1.
a(5) = 0 because A006577(5) = 5 is the end of the cycle.
a(57) = 2 because A006577(57) = 32 and A006577(32) = 5 is the end of the cycle.
		

Crossrefs

Cf. A006577.

Programs

  • Maple
    for n from 1 to 200 do:
        m:=n: a:=2:
        for it from 1 to 1000
        while (a>1) do:
            jj:=0: a:=0: x:=m:
            if m=5 then
                printf(`%d, `, it-1): jj:=1:
            else
                for i from 1 to 1000
                while (x>1) do:
                    if irem(x, 2)=0 then
                        x := x/2: a := a+1:
                    else
                        x := 3*x+1: a := a+1:
                    fi:
                od:
                m:=a:
            fi:
        od:
        if jj=0 then
            printf(`%d, `, it-1):
        fi:
    od:
  • Mathematica
    Collatz[n_] := NestWhileList[If[EvenQ[#], #/2, 3 # + 1] &, n, # > 1 &]; f[n_] := Length[Collatz[n]] - 1; Table[k = Rest[NestWhileList[f, n, UnsameQ, All]]; If[k[[1]] == n, 0, k = DeleteCases[k, 0]; If[Length[k] > 1 && k[[-1]] == k[[-2]], k = Most[k]]; Length[k]], {n, 100}] (* T. D. Noe, Mar 01 2013 *)