cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A286575 Run-length transform of A001316.

Original entry on oeis.org

1, 2, 2, 2, 2, 4, 2, 4, 2, 4, 4, 4, 2, 4, 4, 2, 2, 4, 4, 4, 4, 8, 4, 8, 2, 4, 4, 4, 4, 8, 2, 4, 2, 4, 4, 4, 4, 8, 4, 8, 4, 8, 8, 8, 4, 8, 8, 4, 2, 4, 4, 4, 4, 8, 4, 8, 4, 8, 8, 8, 2, 4, 4, 4, 2, 4, 4, 4, 4, 8, 4, 8, 4, 8, 8, 8, 4, 8, 8, 4, 4, 8, 8, 8, 8, 16, 8, 16, 4, 8, 8, 8, 8, 16, 4, 8, 2, 4, 4, 4, 4, 8, 4, 8, 4, 8, 8, 8, 4
Offset: 0

Views

Author

Antti Karttunen, May 28 2017

Keywords

Examples

			For n = 0, there are no 1-runs, and thus a(0) = 1 as an empty product.
For n = 29, "11101" in binary, there are two 1-runs, of lengths 1 and 3, thus a(29) = A001316(1) * A001316(3) = 2*4 = 8.
		

Crossrefs

Programs

  • Mathematica
    Table[Times @@ Map[Sum[Mod[#, 2] &@ Binomial[#, k], {k, 0, #}] &@ Length@ # &, DeleteCases[Split@ IntegerDigits[n, 2], ?(First@ # == 0 &)]], {n, 0, 108}] (* _Michael De Vlieger, May 29 2017 *)
  • Python
    from sympy import factorint, prime, log
    import math
    def wt(n): return bin(n).count("1")
    def a037445(n):
        f=factorint(n)
        return 2**sum([wt(f[i]) for i in f])
    def A(n): return n - 2**int(math.floor(log(n, 2)))
    def b(n): return n + 1 if n<2 else prime(1 + (len(bin(n)[2:]) - bin(n)[2:].count("1"))) * b(A(n))
    def a(n): return a037445(b(n)) # Indranil Ghosh, May 30 2017
    
  • Python
    # use RLT function from A278159
    def A286575(n): return RLT(n,lambda m: 2**(bin(m).count('1'))) # Chai Wah Wu, Feb 04 2022
  • Scheme
    (define (A286575 n) (fold-left (lambda (a r) (* a (A001316 r))) 1 (bisect (reverse (binexp->runcount1list n)) (- 1 (modulo n 2)))))
    (define (bisect lista parity) (let loop ((lista lista) (i 0) (z (list))) (cond ((null? lista) (reverse! z)) ((eq? i parity) (loop (cdr lista) (modulo (1+ i) 2) (cons (car lista) z))) (else (loop (cdr lista) (modulo (1+ i) 2) z)))))
    (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)))))))
    (define (A001316 n) (let loop ((n n) (z 1)) (cond ((zero? n) z) ((even? n) (loop (/ n 2) z)) (else (loop (/ (- n 1) 2) (* z 2))))))
    

Formula

a(n) = A037445(A005940(1+n)).
a(n) = A000079(A286574(n)).