|
|
A073137
|
|
a(n) is the least number whose binary representation has the same number of 0's and 1's as n.
|
|
6
|
|
|
0, 1, 2, 3, 4, 5, 5, 7, 8, 9, 9, 11, 9, 11, 11, 15, 16, 17, 17, 19, 17, 19, 19, 23, 17, 19, 19, 23, 19, 23, 23, 31, 32, 33, 33, 35, 33, 35, 35, 39, 33, 35, 35, 39, 35, 39, 39, 47, 33, 35, 35, 39, 35, 39, 39, 47, 35, 39, 39, 47, 39, 47, 47, 63, 64, 65, 65, 67, 65, 67, 67, 71, 65
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
0,3
|
|
COMMENTS
|
|
|
LINKS
|
|
|
FORMULA
|
a(0)=0, a(1)=1; for n > 1, let C = 2^(floor(log_2(n))-1) = A072376(n); then a(n) = a(n-C) + C if n < 3*C; otherwise a(n) = 2*a(n - 2*C) + 1. [corrected by Jon E. Schoenfield, Jun 27 2021]
|
|
EXAMPLE
|
a(20)=17, as 20='10100' and 17 is the smallest number having two 1's and three 0's: 17='10001', 18='10010', 20='10100' and 24='11000'.
|
|
MAPLE
|
a:= n-> (l-> (2^nops(l)+2^add(i, i=l))/2-1)(Bits[Split](n)):
|
|
MATHEMATICA
|
lnb[n_]:=Module[{sidn=Sort[IntegerDigits[n, 2]]}, FromDigits[Join[{1}, Most[ sidn]], 2]]; Join[{0}, Array[lnb, 80]] (* Harvey P. Dale, Aug 04 2014 *)
|
|
PROG
|
(Python)
def a(n):
b = bin(n)[2:]; z = b.count('0'); w = len(b) - z
return int('1'*(w > 0) + '0'*z + '1'*(w-1), 2)
(Python)
def a(n): b = bin(n)[2:]; return int(b[0] + "".join(sorted(b[1:])), 2)
(PARI) a(n) = if(n==0, 0, 1<<logint(n, 2) + 1<<(hammingweight(n)-1) - 1); \\ Kevin Ryde, Jun 26 2021
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|