login
Next larger integer with same number of runs in binary expansion as n.
1

%I #9 Feb 27 2021 15:03:33

%S 3,4,7,6,9,8,15,12,11,18,13,14,17,16,31,24,19,20,23,22,37,26,25,28,27,

%T 34,29,30,33,32,63,48,35,36,39,38,41,40,47,44,43,74,45,46,53,50,49,56,

%U 51,52,55,54,69,58,57,60,59,66,61,62,65,64,127,96,67,68

%N Next larger integer with same number of runs in binary expansion as n.

%C Number of runs in binary expansion is given by A005811.

%C This is a permutation of A107907.

%H Rémy Sigrist, <a href="/A341944/b341944.txt">Table of n, a(n) for n = 1..8191</a>

%H <a href="/index/Bi#binary">Index entries for sequences related to binary expansion of n</a>

%F A005811(a(n)) = A005811(n).

%F a(2^k-1) = 2^(k+1)-1 for any k > 0.

%e The first terms in decimal and in binary, alongside A005811(n), are:

%e n a(n) bin(n) bin(a(n)) A005811(n)

%e -- ---- ------ --------- ----------

%e 1 3 1 11 1

%e 2 4 10 100 2

%e 3 7 11 111 1

%e 4 6 100 110 2

%e 5 9 101 1001 3

%e 6 8 110 1000 2

%e 7 15 111 1111 1

%e 8 12 1000 1100 2

%e 9 11 1001 1011 3

%e 10 18 1010 10010 4

%e 11 13 1011 1101 3

%e 12 14 1100 1110 2

%o (PARI) a(n) = my (r=hammingweight(bitxor(n, n>>1))); for (k=n+1, oo, if (r==hammingweight(bitxor(k, k>>1)), return (k)))

%o (Python)

%o def runs(n): return bin(n^(n>>1)).count('1')

%o def a(n):

%o nruns, m = runs(n), n + 1

%o while runs(m) != nruns: m += 1

%o return m

%o print([a(n) for n in range(1, 67)]) # _Michael S. Branicky_, Feb 24 2021

%Y Cf. A000975, A005811, A057168, A107907.

%K nonn,base

%O 1,1

%A _Rémy Sigrist_, Feb 24 2021