A025280 Complexity of n: number of 1's required to build n using +, *, and ^.
1, 2, 3, 4, 5, 5, 6, 5, 5, 6, 7, 7, 8, 8, 8, 6, 7, 7, 8, 8, 9, 9, 10, 8, 7, 8, 6, 7, 8, 9, 10, 7, 8, 9, 10, 7, 8, 9, 10, 10, 11, 11, 12, 11, 10, 11, 12, 9, 8, 9, 10, 10, 11, 8, 9, 9, 10, 10, 11, 11, 12, 12, 11, 7, 8, 9, 10, 11, 12, 12, 13, 9, 10, 10, 10, 11, 12, 11, 12, 11, 7, 8, 9, 10, 11, 12, 11
Offset: 1
Keywords
References
- R. K. Guy, Unsolved Problems Number Theory, Sect. F26.
Links
- Alois P. Heinz, Table of n, a(n) for n = 1..10000
- R. K. Guy, Some suspiciously simple sequences, Amer. Math. Monthly 93 (1986), 186-190; 94 (1987), 965; 96 (1989), 905.
- J. Iraids, K. Balodis, J. Cernenoks, M. Opmanis, R. Opmanis and K. Podnieks, Integer Complexity: Experimental and Analytical Results. arXiv preprint arXiv:1203.6462, 2012. - From _N. J. A. Sloane_, Sep 22 2012
- Index to sequences related to the complexity of n
Crossrefs
Programs
-
Maple
with(numtheory): a:= proc(n) option remember; `if`(n=1, 1, min( seq(a(i)+a(n-i), i=1..n-1), seq(a(d)+a(n/d), d=divisors(n) minus {1, n}), seq(a(root(n, p))+a(p), p=divisors(igcd(seq(i[2], i=ifactors(n)[2]))) minus {0,1}))) end: seq(a(n), n=1..100); # Alois P. Heinz, Mar 08 2013
-
Mathematica
root[x_, n_] := With[{f = FactorInteger[x]}, Times @@ (f[[All, 1]]^(f[[All, 2]]/n))]; Clear[a]; a[n_] := a[n] = If[n == 1, 1, Min[Table[a[i] + a[n-i], {i, 1, n-1}], Table[a[d] + a[n/d], {d, Divisors[n][[2 ;; -2]]}], Table[a[root[n, p]] + a[p], {p, DeleteCases[Divisors[GCD @@ FactorInteger[n][[All, 2]]], 0|1]}]]]; Table[a[n], {n, 1, 100}] (* Jean-François Alcover, Mar 12 2014, after Alois P. Heinz *)
-
Python
from math import gcd from sympy import divisors, factorint, integer_nthroot from functools import cache @cache def a(n): if n == 1: return 1 p = min(a(i)+a(n-1) for i in range(1, n//2+1)) divs, m = divisors(n), n if len(divs) > 2: m = min(a(d)+a(n//d) for d in divs[1:len(divs)//2+1]) f = factorint(n) edivs, e = divisors(gcd(*f.values())), n if len(edivs) > 1: e = min(a(integer_nthroot(n, r)[0])+a(r) for r in edivs[1:]) return min(p, m, e) print([a(n) for n in range(1, 88)]) # Michael S. Branicky, Mar 24 2024 after Alois P. Heinz
Formula
a(n) = A005208(n) + 1.