A007608 Nonnegative integers in base -4.
0, 1, 2, 3, 130, 131, 132, 133, 120, 121, 122, 123, 110, 111, 112, 113, 100, 101, 102, 103, 230, 231, 232, 233, 220, 221, 222, 223, 210, 211, 212, 213, 200, 201, 202, 203, 330, 331, 332, 333, 320, 321, 322, 323, 310, 311, 312, 313, 300, 301, 302, 303, 13030
Offset: 0
References
- D. E. Knuth, The Art of Computer Programming. Addison-Wesley, Reading, MA, 1969, Vol. 2, p. 189.
- N. J. A. Sloane and Simon Plouffe, The Encyclopedia of Integer Sequences, Academic Press, 1995 (includes this sequence).
Links
- Joerg Arndt, Table of n, a(n) for n = 0..1000
- Matthew Szudzik, A Mathematica programming contest
- Eric Weisstein's World of Mathematics, Negabinary
- Wikipedia, Negative base
Crossrefs
Programs
-
Haskell
a007608 0 = 0 a007608 n = a007608 n' * 10 + m where (n', m) = if r < 0 then (q + 1, r + 4) else (q, r) where (q, r) = quotRem n (negate 4) -- Reinhard Zumkeller, Jul 15 2012
-
Mathematica
ToNegaBases[i_Integer, b_Integer] := FromDigits[ Rest[ Reverse[ Mod[ NestWhileList[(#1 - Mod[ #1, b])/-b &, i, #1 != 0 &], b]]]]; Table[ ToNegaBases[n, 4], {n, 0, 55}]
-
PARI
A007608(n,s="")={until(!n\=-4,s=Str(n%-4,s));eval(s)} \\ M. F. Hasler, May 20 2012
-
Python
def A007608(n): s, q = '', n while q >= 4 or q < 0: q, r = divmod(q, -4) if r < 0: q += 1 r += 4 s += str(r) return int(str(q)+s[::-1]) # Chai Wah Wu, Apr 09 2016
Comments