|
|
A025586
|
|
Largest value in '3x+1' trajectory of n.
|
|
54
|
|
|
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
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,2
|
|
COMMENTS
|
Here by definition the trajectory ends when 1 is reached. Therefore this sequence differs for n = 1 and n = 2 from A056959, which considers the orbit ending in the infinite loop 1 -> 4 -> 2 -> 1.
For n > 2, a(n) is divisible by 4. See the explanatory comment in A056959. - Peter Munn, Oct 14 2019
In an email of Aug 06 2023, Guy Chouraqui observes that the digital root of a(n) appears to be either 7 or a multiple of 4 for all n > 2. (See also A006885.) - N. J. A. Sloane, Aug 11 2023
|
|
LINKS
|
|
|
EXAMPLE
|
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.
|
|
MAPLE
|
a:= proc(n) option remember; `if`(n=1, 1,
max(n, a(`if`(n::even, n/2, 3*n+1))))
end:
|
|
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 *)
(* Using Weisstein's collatz[n] definition above *) Table[Max[collatz[n]], {n, 100}] (* Alonso del Arte, May 25 2019 *)
|
|
PROG
|
(Haskell)
a025586 = last . a220237_row
(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)
(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
|
|
CROSSREFS
|
Essentially the same as A056959: only a(1) and a(2) differ, see Comments.
|
|
KEYWORD
|
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|