OFFSET
1,3
COMMENTS
The Matula-Goebel number of a rooted tree can be defined in the following recursive manner: to the one-vertex tree there corresponds the number 1; to a tree T with root degree 1 there corresponds the t-th prime number, where t is the Matula-Goebel number of the tree obtained from T by deleting the edge emanating from the root; to a tree T with root degree m>=2 there corresponds the product of the Matula-Goebel numbers of the m branches of T.
REFERENCES
D. W. Matula, A natural rooted tree enumeration by prime factorization, SIAM Review, 10, 1968, 273.
LINKS
Reinhard Zumkeller, Table of n, a(n) for n = 1..10000
Emeric Deutsch, Tree statistics from Matula numbers, arXiv preprint arXiv:1111.4288 [math.CO], 2011.
F. Goebel, On a 1-1-correspondence between rooted trees and natural numbers, J. Combin. Theory, B 29 (1980), 141-143.
I. Gutman and A. Ivic, On Matula numbers, Discrete Math., 150, 1996, 131-142.
I. Gutman and Yeong-Nan Yeh, Deducing properties of trees from their Matula numbers, Publ. Inst. Math., 53 (67), 1993, 17-22.
FORMULA
a(1)=0; if n = prime(t) (the t-th prime), then a(n)=1+G(t), where G(t) is the number of prime divisors of t counted with multiplicities; if n=r*s (r,s>=2), then a(n)=a(r)+a(s). The Maple program is based on this recursive formula.
EXAMPLE
a(7)=3 because the rooted tree with Matula-Goebel number 7 is the rooted tree Y.
a(2^m) = m because the rooted tree with Matula-Goebel number 2^m is a star with m edges.
MAPLE
with(numtheory): a := proc (n) local r, s: r := proc (n) options operator, arrow: op(1, factorset(n)) end proc: s := proc (n) options operator, arrow: n/r(n) end proc: if n = 1 then 0 elif bigomega(n) = 1 then 1+bigomega(pi(n)) else a(r(n))+a(s(n)) end if end proc: seq(a(n), n = 1 .. 110);
MATHEMATICA
r[n_] := FactorInteger[n][[1, 1]];
s[n_] := n/r[n];
a[n_] := Which[n == 1, 0, PrimeOmega[n] == 1, 1 + PrimeOmega[PrimePi[n]], True, a[r[n]] + a[s[n]]];
Table[a[n], {n, 1, 110}] (* Jean-François Alcover, Jun 25 2024, after Maple code *)
PROG
(Haskell)
import Data.List (genericIndex)
a196052 n = genericIndex a196052_list (n - 1)
a196052_list = 0 : g 2 where
g x = y : g (x + 1) where
y = if t > 0 then a001222 t + 1 else a196052 r + a196052 s
where t = a049084 x; r = a020639 x; s = x `div` r
-- Reinhard Zumkeller, Sep 03 2013
(PARI) a(n) = my(m=factor(n)); [bigomega(primepi(p))+1 | p<-m[, 1]] * m[, 2]; \\ Kevin Ryde, Oct 16 2020
CROSSREFS
KEYWORD
nonn
AUTHOR
Emeric Deutsch, Sep 27 2011
STATUS
approved