A056792 Minimal number of steps to get from 0 to n by (a) adding 1 or (b) multiplying by 2.
0, 1, 2, 3, 3, 4, 4, 5, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, 6, 7, 7, 8, 7, 8, 8, 9, 6, 7, 7, 8, 7, 8, 8, 9, 7, 8, 8, 9, 8, 9, 9, 10, 7, 8, 8, 9, 8, 9, 9, 10, 8, 9, 9, 10, 9, 10, 10, 11, 7, 8, 8, 9, 8, 9, 9, 10, 8, 9, 9, 10, 9, 10, 10, 11, 8, 9, 9, 10, 9, 10, 10, 11, 9, 10, 10, 11, 10, 11
Offset: 0
Examples
12 = 1100 in binary, so a(12)=2+4-1=5.
Links
- Charles R Greathouse IV, Table of n, a(n) for n = 0..10000
- Hugo Pfoertner, Addition chains
- Index to sequences related to the complexity of n
Crossrefs
Programs
-
Haskell
c i = if i `mod` 2 == 0 then i `div` 2 else i - 1 b 0 foldCount = foldCount b sheetCount foldCount = b (c sheetCount) (foldCount + 1) a056792 n = b n 0 -- Peter Kagey, Sep 02 2015
-
Maple
a:= n-> (l-> nops(l)+add(i, i=l)-1)(convert(n, base, 2)): seq(a(n), n=0..105); # Alois P. Heinz, Jul 16 2015
-
Mathematica
f[ n_Integer ] := (c = 0; k = n; While[ k != 0, If[ EvenQ[ k ], k /= 2, k-- ]; c++ ]; c); Table[ f[ n ], {n, 0, 100} ] f[n_] := Floor@ Log2@ n + DigitCount[n, 2, 1]; Array[f, 100] (* Robert G. Wilson v, Jul 31 2012 *)
-
PARI
a(n)=if(n<1,0,n-valuation(n!*sum(i=1,n,1/i),2))
-
PARI
a(n)=if(n<1,0,1+a(if(n%2,n-1,n/2)))
-
PARI
a(n)=if(n<1,0,n=binary(n);sum(i=1,#n,n[i])+#n-1) \\ Charles R Greathouse IV, Apr 11 2012
Formula
a(0) = 0, a(2*n+1) = a(2*n) + 1 and a(2*n) = a(n) + 1.
a(n) = n-valuation(A000254(n), 2) for n>0. - Benoit Cloitre, Mar 09 2004
a(n) = (weight of binary expansion of n) + (length of binary expansion of n) - 1.
Extensions
More terms from James Sellers, Sep 06 2000
More terms from David W. Wilson, Sep 07 2000
Comments