| Ruud H.G. van Tol on Sun, 16 Jan 2022 09:39:04 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Collatz, first_non_higher |
succ(c2) = {
my
( c3= c2
, p2= 0 \\halvings
, p3= 0 \\triplings
);
if( !(c2%2), return( [1,0,0,0] ) );
while
( c3 >= c2
, c3 = ( 3 * c3 + 1 ) / 2;
p2++; \\halvings
p3++; \\triplings
while
( c3 >= c2 && !(c3%2)
, c3/= 2;
p2++; \\ halvings
if( 1 == c3, break );
);
if( 1 == c3, break );
);
[ p2, c2, p3, c3];
}
- - - - - -
If `Collatz_successor(c2) = c3`,
and `p2` is the number of involved halvings,
and `p3` is the number of involved triplings,
then the tuple `[c2, p2, c3, p3]`
defines a "sieving formula":
`(c2 + 2^p2*i) -> (c3 + 3^p3*i) (for i ∈ ℕ)`.
- - - - - -
An interesting "optimal" case for Collatz
is to go from any odd number
to the first non-higher (odd or even) number:
`1->4->2->1 (p2=2, p3=1)`,
`3->10->5->16->8->4->2 (p2=4, p3=2)`,
etc.
See https://oeis.org/A177789 "dropping time".
Notice that `2^p2` then is
the first power of 2 above `3^p3`,
so `p2 = 1 + floor(p3*log(3)/log(2))`.
(warning: proving this to be,
without "using Collatz",
is very interesting)
Also notice that `2^p2 > c2`
(as otherwise it is a duplicate formula).
(easy)
- - - - - -
Initial examples (with `c2 = (n > 0) ? (2*n-1) : (0)`)
n c2 c3 p2 p3 formula examples
-- -- -- -- -- ------------------------------ ----------------------
0 0 0 1 0 ( 2*i + 0) -> ( 1*i + 0) 0->0, 2->1, 4->2
1 1 1 2 1 ( 4*i + 1) -> ( 3*i + 1) 1->1, 5->4, 9->7
2 3 2 4 2 ( 16*i + 3) -> ( 9*i + 2) 3->2, 19->11, 35->20
3 5 4 2 1 Skip, as (c2 > 2^p2), so see (c2 mod 2^p2).
4 7 5 7 4 ( 128*i + 7) -> ( 81*i + 5) 7->5, 135->86
...
12 23 20 5 3 ( 32*i + 23) -> ( 27*i + 20) 23->20, 55->47, 87->74
14 27 23 59 37 (2^59*i + 27) -> (3^37*i + 23) 27->23, ...
Notice that the even-to-odd step is covered by formula-0.
From 27 to 1:
(14: 27->23, 12: 23->20, 0: 20->5, 1: 5->4, 0: 4->2, 0: 2->1)
- - - - - -
Have fun with Collatz!
-- Greetings, Ruud
P.S. IMO, Collatz really needs no proof,
not more than Riemann does,
and rather is a nicely relationship to explore
between addition and multiplication,
much like exp/log.