A167489 Product of run lengths in binary representation of n.
1, 1, 1, 2, 2, 1, 2, 3, 3, 2, 1, 2, 4, 2, 3, 4, 4, 3, 2, 4, 2, 1, 2, 3, 6, 4, 2, 4, 6, 3, 4, 5, 5, 4, 3, 6, 4, 2, 4, 6, 3, 2, 1, 2, 4, 2, 3, 4, 8, 6, 4, 8, 4, 2, 4, 6, 9, 6, 3, 6, 8, 4, 5, 6, 6, 5, 4, 8, 6, 3, 6, 9, 6, 4, 2, 4, 8, 4, 6, 8, 4, 3, 2, 4, 2, 1, 2, 3, 6, 4, 2, 4, 6, 3, 4, 5, 10, 8, 6, 12, 8, 4, 8
Offset: 0
Examples
a(56) = 9, because 56 in binary is written 111000 giving the run lengths 3,3 and 3x3 = 9. a(99) = 12, because 99 in binary is written 1100011 giving the run lengths 2,3,2, and 2x3x2 = 12.
Links
Crossrefs
Cf. A167490 (smallest number with binary run length product = n).
Programs
-
Haskell
import Data.List (group) a167489 = product . map length . group . a030308_row -- Reinhard Zumkeller, Jul 05 2013
-
Mathematica
Table[ Times @@ (Length /@ Split[IntegerDigits[n, 2]]), {n, 0, 100}](* Olivier Gérard, Jul 05 2013 *)
-
PARI
a(n) = {my(p=1, b=n%2, i=0); while(n!=0, n=n>>1; i=i+1; if((n%2)!=b, p=p*i; i=0; b=n%2)); p} \\ Indranil Ghosh, Apr 17 2017, after the Python Program by Antti Karttunen
-
Python
def A167489(n): '''Product of run lengths in binary representation of n.''' p = 1 b = n%2 i = 0 while (n != 0): n >>= 1 i += 1 if ((n%2) != b): p *= i i = 0 b = n%2 return(p) # Antti Karttunen, Jul 24 2013 (Cf. Python program for A227184).
-
Scheme
(define (A167489 n) (apply * (binexp->runcount1list n))) (define (binexp->runcount1list n) (if (zero? n) (list) (let loop ((n n) (rc (list)) (count 0) (prev-bit (modulo n 2))) (if (zero? n) (cons count rc) (if (eq? (modulo n 2) prev-bit) (loop (floor->exact (/ n 2)) rc (1+ count) (modulo n 2)) (loop (floor->exact (/ n 2)) (cons count rc) 1 (modulo n 2))))))) ;; Antti Karttunen, Jul 05 2013