OFFSET
1,4
COMMENTS
By invoking A285734 and A285735 recursively, any natural number n > 1 can be decomposed as a sum of successively smaller squarefree numbers, until only n instances of 1's remain. This process can be depicted as a binary tree, where 1's are leaves, and any other node n branches to the left as A285734(n) and to the right as A285735(n). This sequence gives the distance from the root of tree (n) to a leaf (1) that is nearest to the root.
LINKS
Antti Karttunen, Table of n, a(n) for n = 1..10000
FORMULA
EXAMPLE
A285734(2) = A285735(2) = 1, thus a tree with root 2 has just two leaves 1 and 1, so the minimum distance to them is 1, thus a(2) = 1.
A285734(3) = 1 and A285735(3) = 2, thus a tree with root 3 has one immediate leave 1 and the subtree 2 as its other branch, so the minimum distance to a leaf (1) is one edge, thus a(3) = 1.
A285734(5) = 2 and A285735(3) = 3, thus a tree with root 5 has the subtree 2 as its other branch, and the subtree 3 as the other branch, so the minimum distance to a leaf (1) is 1 + shortest distance computed for cases 2 and 3, thus a(5) = 1 + min(1,1) = 2.
The tree with root 17 looks like this:
17
|
..................../ \..................
7 10
2......../ \........5 5......../ \........5
/ \ / \ / \ / \
/ \ / \ / \ / \
/ \ / \ / \ / \
1 1 2 3 2 3 2 3
1 1 1 2 1 1 1 2 1 1 1 2
1 1 1 1 1 1
We see that the shortest distance to 1 from the root is at the left border of the tree, just three edges, thus a(17) = 3.
PROG
(Scheme, with memoization-macro definec)
(Python)
from sympy.ntheory.factor_ import core
def issquarefree(n): return core(n) == n
def a285734(n):
if n==1: return 0
j=n//2
while True:
if issquarefree(j) and issquarefree(n - j): return j
else: j-=1
def a285735(n): return n - a285734(n)
def a286103(n): return 0 if n==1 else 1 + min(a286103(a285734(n)), a286103(a285735(n)))
print([a286103(n) for n in range(1, 121)]) # Indranil Ghosh, May 02 2017
CROSSREFS
KEYWORD
nonn
AUTHOR
Antti Karttunen, May 02 2017
STATUS
approved