English

Integer complexity: algorithms and computational results

Number Theory 2018-05-28 v2

Abstract

Define n\|n\| to be the complexity of nn, the smallest number of ones needed to write nn using an arbitrary combination of addition and multiplication. Define nn to be stable if for all k0k\ge 0, we have 3kn=n+3k\|3^k n\|=\|n\|+3k. In [7], this author and Zelinsky showed that for any nn, there exists some K=K(n)K=K(n) such that 3Kn3^K n is stable; however, the proof there provided no upper bound on K(n)K(n) or any way of computing it. In this paper, we describe an algorithm for computing K(n)K(n), and thereby also show that the set of stable numbers is a computable set. The algorithm is based on considering the defect of a number, defined by δ(n):=n3log3n\delta(n):=\|n\|-3\log_3 n, building on the methods presented in [3]. As a side benefit, this algorithm also happens to allow fast evaluation of the complexities of powers of 22; we use it to verify that 2k3=2k+3\|2^k 3^\ell\|=2k+3\ell for k48k\le48 and arbitrary \ell (excluding the case k==0k=\ell=0), providing more evidence for the conjecture that 2k3=2k+3\|2^k 3^\ell\|=2k+3\ell whenever kk and \ell are not both zero. An implementation of these algorithms in Haskell is available.

Keywords

Cite

@article{arxiv.1606.03635,
  title  = {Integer complexity: algorithms and computational results},
  author = {Harry Altman},
  journal= {arXiv preprint arXiv:1606.03635},
  year   = {2018}
}

Comments

34 pages, 2 figures