A066058 In base 2: smallest integer which requires n 'Reverse and Add' steps to reach a palindrome.
0, 2, 11, 44, 19, 20, 275, 326, 259, 202, 103, 74, 1027, 1070, 1049, 1072, 1547, 1310, 1117, 794, 569, 398, 3083, 2154, 1177, 1064, 4697, 4264, 4443, 2678, 2169, 1422, 779, 3226, 1551, 1114, 1815, 1062, 4197, 3106, 8697, 7238, 16633, 12302, 6683
Offset: 0
Examples
11 is the smallest integer which requires two steps to reach a base 2 palindrome (cf. A066057), so a(2) = 11; written in base 10: 11 -> 11 + 13 = 24 -> 24 + 3 = 27; written in base 2: 1011 -> 1011 + 1101 = 11000 -> 11000 + 11 = 11011.
Links
Programs
-
ARIBAS
(* For function b2reverse see A066057. *) function a066058(mx: integer); var k,m,n,rev,steps: integer; begin for k := 0 to mx do n := 0; steps := 0; m := n; rev := b2reverse(m); while not(steps = k and m = rev) do inc(n); m := n; rev := b2reverse(m); steps := 0; while steps < k and m <> rev do m := m + rev; rev := b2reverse(m); inc(steps); end; end; write(n,","); end; end; a066058(45);
-
Mathematica
Table[ SelectFirst[Range[0, 20000], (np = #; i = 0; While[ np != IntegerReverse[np, 2] && i <= n, np = np + IntegerReverse[np, 2]; i++]; i == n ) &] , {n, 0, 44}] (* Robert Price, Oct 16 2019 *)
-
Python
def A066058(n): if n > 0: k = 0 while True: m = k for i in range(n): s1 = format(m,'b') s2 = s1[::-1] if s1 == s2: break m += int(s2,2) else: s1 = format(m,'b') if s1 == s1[::-1]: return k k += 1 else: return 0 # Chai Wah Wu, Jan 06 2015
Comments