A025586 Largest value in '3x+1' trajectory of n.
1, 2, 16, 4, 16, 16, 52, 8, 52, 16, 52, 16, 40, 52, 160, 16, 52, 52, 88, 20, 64, 52, 160, 24, 88, 40, 9232, 52, 88, 160, 9232, 32, 100, 52, 160, 52, 112, 88, 304, 40, 9232, 64, 196, 52, 136, 160, 9232, 48, 148, 88, 232, 52, 160, 9232, 9232, 56, 196, 88, 304, 160, 184, 9232
Offset: 1
Examples
The 3x + 1 trajectory of 9 is 9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 (see A033479). Since the largest number in that sequence is 52, a(9) = 52.
Links
- T. D. Noe, Table of n, a(n) for n = 1..10000
- Christian Hercher, There are no Collatz m-Cycles with m <= 91, J. Int. Seq. (2023) Vol. 26, Article 23.3.5.
- Philippe Picart, Algorithme de Collatz et conjecture de Syracuse
- Index entries for sequences related to 3x+1 (or Collatz) problem
Crossrefs
Programs
-
Haskell
a025586 = last . a220237_row -- Reinhard Zumkeller, Jan 03 2013, Aug 29 2012
-
Maple
a:= proc(n) option remember; `if`(n=1, 1, max(n, a(`if`(n::even, n/2, 3*n+1)))) end: seq(a(n), n=1..87); # Alois P. Heinz, Oct 16 2021
-
Mathematica
collatz[a0_Integer, maxits_:1000] := NestWhileList[If[EvenQ[#], #/2, 3# + 1] &, a0, Unequal[#, 1, -1, -10, -34] &, 1, maxits]; (* collatz[n] function definition by Eric Weisstein *) Flatten[Table[Take[Sort[Collatz[n], Greater], 1], {n, 60}]] (* Alonso del Arte, Nov 14 2007 *) collatzMax[n_] := Module[{r = m = n}, While[m > 2, If[OddQ[m], m = 3 * m + 1; If[m > r, r = m], m = m/2]]; r]; Table[ collatzMax[n], {n, 100}] (* Jean-François Alcover, Jan 28 2015, after Charles R Greathouse IV *) (* Using Weisstein's collatz[n] definition above *) Table[Max[collatz[n]], {n, 100}] (* Alonso del Arte, May 25 2019 *)
-
PARI
a(n)=my(r=n);while(n>2,if(n%2,n=3*n+1;if(n>r,r=n),n/=2));r \\ Charles R Greathouse IV, Jul 19 2011
-
Python
def a(n): if n<2: return 1 l=[n, ] while True: if n%2==0: n//=2 else: n = 3*n + 1 if not n in l: l+=[n, ] if n<2: break else: break return max(l) print([a(n) for n in range(1, 101)]) # Indranil Ghosh, Apr 14 2017
-
Scala
def collatz(n: Int): Int = (n % 2) match { case 0 => n / 2 case 1 => 3 * n + 1 } def collatzTrajectory(start: Int): List[Int] = if (start == 1) List(1) else { import scala.collection.mutable.ListBuffer var curr = start; var trajectory = new ListBuffer[Int]() while (curr > 1) { trajectory += curr; curr = collatz(curr) } trajectory.toList } for (n <- 1 to 100) yield collatzTrajectory(n).max // Alonso del Arte, Jun 02 2019
Comments