|
|
A035928
|
|
Numbers n such that BCR(n) = n, where BCR = binary-complement-and-reverse = take one's complement then reverse bit order.
|
|
34
|
|
|
2, 10, 12, 38, 42, 52, 56, 142, 150, 170, 178, 204, 212, 232, 240, 542, 558, 598, 614, 666, 682, 722, 738, 796, 812, 852, 868, 920, 936, 976, 992, 2110, 2142, 2222, 2254, 2358, 2390, 2470, 2502, 2618, 2650, 2730, 2762, 2866, 2898, 2978, 3010, 3132, 3164, 3244
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,1
|
|
COMMENTS
|
Numbers n such that A036044(n) = n.
Also: numbers such that n+BR(n) is in A000225={2^k-1} (with BR = binary reversed). - M. F. Hasler, Dec 17 2007
|
|
LINKS
|
|
|
FORMULA
|
If offset were 0, a(2n+1) - a(2n) = 2^floor(log_2(n)+1).
|
|
EXAMPLE
|
38 is such a number because 38=100110; complement to get 011001, then reverse bit order to get 100110.
|
|
MAPLE
|
[seq(ReflectBinSeq(j, (floor_log_2(j)+1)), j=1..256)];
ReflectBinSeq := (x, n) -> (((2^n)*x)+binrevcompl(x));
binrevcompl := proc(nn) local n, z; n := nn; z := 0; while(n <> 0) do z := 2*z + ((n+1) mod 2); n := floor(n/2); od; RETURN(z); end;
floor_log_2 := proc(n) local nn, i: nn := n; for i from -1 to n do if(0 = nn) then RETURN(i); fi: nn := floor(nn/2); od: end; # Computes essentially the same as floor(log[2](n))
# alternative Maple program:
q:= n-> (l-> is(n=add((1-l[-i])*2^(i-1), i=1..nops(l))))(Bits[Split](n)):
|
|
MATHEMATICA
|
bcrQ[n_]:=Module[{idn2=IntegerDigits[n, 2]}, Reverse[idn2/.{1->0, 0->1}] == idn2]; Select[Range[3200], bcrQ] (* Harvey P. Dale, May 24 2012 *)
|
|
PROG
|
(PARI) for(n=1, 1000, l=length(binary(n)); b=binary(n); if(sum(i=1, l, abs(component(b, i)-component(b, l+1-i)))==l, print1(n, ", ")))
(PARI) for(i=1, 999, if(Set(vecextract(t=binary(i), "-1..1")+t)==[1], print1(i", "))) \\ M. F. Hasler, Dec 17 2007
(PARI) a(n) = my (b=binary(n)); (n+1)*2^#b-fromdigits(Vecrev(b), 2)-1 \\ Rémy Sigrist, Mar 15 2021
(Haskell)
a035928 n = a035928_list !! (n-1)
a035928_list = filter (\x -> a036044 x == x) [0, 2..]
(Python)
def comp(s): z, o = ord('0'), ord('1'); return s.translate({z:o, o:z})
def BCR(n): return int(comp(bin(n)[2:])[::-1], 2)
def aupto(limit): return [m for m in range(limit+1) if BCR(m) == m]
(Python)
from itertools import count, islice
def A035928_gen(startvalue=1): # generator of terms >= startvalue
return filter(lambda n:n==int(format(~n&(1<<(m:=n.bit_length()))-1, '0'+str(m)+'b')[::-1], 2), count(max(startvalue, 1)))
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,nice,easy,base
|
|
AUTHOR
|
Mike Keith (domnei(AT)aol.com)
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|