A038374 Length of longest contiguous block of 1's in binary expansion of n.
1, 1, 2, 1, 1, 2, 3, 1, 1, 1, 2, 2, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 3, 1, 1, 1, 2, 2, 2, 3, 4, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 6, 1, 1, 1, 2, 1, 1, 2, 3, 1, 1, 1, 2, 2, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 3, 2, 2, 2
Offset: 1
Examples
a(157) = 3 because 157 in base 2 is 10011101 and longest contiguous block of 1's is of length 3. May be arranged into blocks of lengths 1, 2, 4, 8, 16, ...: 1, 1, 2, 1, 1, 2, 3, 1, 1, 1, 2, 2, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 3, 2, 2, 2, 2, 3, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 3, 1, 1, 1, 2, 2, 2, 3, 4, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 5, 6, ... - _N. J. A. Sloane_, Jul 25 2014
Links
Programs
-
Haskell
import Data.List (unfoldr, group) a038374 = maximum . map length . filter ((== 1) . head) . group . unfoldr (\x -> if x == 0 then Nothing else Just $ swap $ divMod x 2) -- Reinhard Zumkeller, May 01 2012
-
Maple
A038374 := proc(n) local nshft,thisr,resul; nshft := n ; resul :=0 ; thisr :=0 ; while nshft > 0 do if nshft mod 2 <> 0 then thisr := thisr+1 ; else resul := max(resul,thisr) ; thisr := 0 ; fi ; nshft := floor(nshft/2) ; od ; resul := max(resul,thisr) ; RETURN(resul) ; end : for n from 1 to 80 do printf("%d,",A038374(n)) ; od : # R. J. Mathar, Jun 15 2006
-
Mathematica
Table[Max[Length/@DeleteCases[Split[IntegerDigits[n,2]],?(MemberQ[ #,0] &)]],{n,120}] (* _Harvey P. Dale, Jun 10 2013 *)
-
PARI
a(n)=if (n==0, return (0)); n>>=valuation(n, 2); if(n<2, return(n)); my(e=valuation(n+1, 2)); max(e, a(n>>e)) \\ Charles R Greathouse IV, Jan 12 2014; edited by Michel Marcus, Apr 14 2019
-
Python
from itertools import groupby def a(n): return max(len(list(g)) for k, g in groupby(bin(n)[1:]) if k=='1') print([a(n) for n in range(1, 91)]) # Michael S. Branicky, Jul 04 2022
Formula
May be defined by the recurrence given in A245196, taking G(n)=n+1 (n>=0) and m=1. - N. J. A. Sloane, Jul 25 2014