Wolfram Research

Function Repository Resource:

MultiplicativePersistence (1.0.0) current version: 1.1.0 »

Source Notebook

Compute the multiplicative persistence of an integer

Contributed by: Christopher Stover

ResourceFunction["MultiplicativePersistence"][n]

returns the multiplicative persistence of n.

Details

Starting with a non-negative integer n, multiply its digits, then multiply the digits of the resulting number, etc., until the result has only one digit. The number of multiplications required to reach the single digit stopping point is called the multiplicative persistence of n.
As an example, consider n=14691:
Multiplying its digits yields 1×4×6×9×1=216.
Multiplying the digits of the result yields 2×1×6=12.
Multiplying the digits of the result yields 1×2=2. Because 2 is a single-digit number, the process stops.
Because it took three steps to reach the stopping point, ResourceFunction["MultiplicativePersistence"][14691] returns 3.
The multiplicative persistence of a number is also sometimes called its number length.
ResourceFunction["MultiplicativePersistence"] threads elementwise over lists.

Examples

Basic Examples (1) 

Compute the multiplicative persistence of 14691:

In[1]:=
ResourceFunction["MultiplicativePersistence"][14691]
Out[1]=

Scope (2) 

MultiplicativePersistence threads elementwise over lists:

In[2]:=
ResourceFunction["MultiplicativePersistence", ResourceVersion->"1.0.0"][{13, 54321, 66677, 8989119898}]
Out[2]=

Compute the multiplicative persistence of the first 100 integers (OEIS A031346):

In[3]:=
ResourceFunction["MultiplicativePersistence"] /@ Range[0, 99, 1]
Out[3]=

Properties and Relations (4) 

The result returned by MultiplicativePersistence can be manually computed using Length with NestWhileList:

In[4]:=
With[{n = 8675309}, ResourceFunction["MultiplicativePersistence"][n] == Length[NestWhileList[Times @@ IntegerDigits[#] &, n, # >= 10 &]] - 1]
Out[4]=

The multiplicative persistence of an integer can also be manually computed with no high-level functions:

In[5]:=
testint1 = 1234
Out[5]=
In[6]:=
digits1 = IntegerDigits[testint1]
Out[6]=
In[7]:=
testint2 = Times @@ digits1
Out[7]=
In[8]:=
digits2 = IntegerDigits[testint2]
Out[8]=
In[9]:=
testint3 = Times @@ digits2
Out[9]=

Because testint3 is a single-digit integer, the process terminates here. Since it took two steps to reach testint3, the multiplicative persistence of testint1=1234 is equal to 2:

In[10]:=
ResourceFunction["MultiplicativePersistence"][testint1]
Out[10]=

The single-digit integer that marks the end of the digit multiplication process is called the multiplicative digital root and is returned by the resource function MultiplicativeDigitalRoot:

In[11]:=
n = 13579
Out[11]=
In[12]:=
list = NestWhileList[Times @@ IntegerDigits[#] &, n, # >= 10 &]
Out[12]=
In[13]:=
ResourceFunction["MultiplicativePersistence"][n] == Length[list] - 1
Out[13]=
In[14]:=
ResourceFunction["MultiplicativeDigitalRoot"][n] == list[[-1]]
Out[14]=

The additive analogue of multiplicative persistence is called additive persistence and is returned by the resource function AdditivePersistence:

In[15]:=
n2 = 2111971
Out[15]=
In[16]:=
{add, mult} = Function[f, NestWhileList[f @@ IntegerDigits[#] &, n2, # >= 10 &]] /@ {Plus, Times}
Out[16]=
In[17]:=
ResourceFunction["MultiplicativePersistence"][n2] == Length[mult] - 1
Out[17]=
In[18]:=
ResourceFunction["AdditivePersistence"][n2] == Length[add] - 1
Out[18]=

Possible Issues (1) 

MultiplicativePersistence requires its input to be non-negative:

In[19]:=
ResourceFunction["MultiplicativePersistence"][-234545]
Out[19]=

Neat Examples (1) 

The smallest integers with multiplicative persistence equal to 0,1,2,3,4, (OEIS A003001):

In[20]:=
ResourceFunction["MultiplicativePersistence", ResourceVersion->"1.0.0"][{10, 25, 39, 77, 679, 6788, 68889, 2677889, 26888999, 3778888999, 277777788888899}]
Out[20]=

It is known that there is no number N<10233 with multiplicative persistence larger than 11 (Carmody 2001).

Publisher

therealcstover

Version History

  • 1.1.0 – 25 May 2023
  • 1.0.0 – 09 August 2022

Source Metadata

Related Resources

Author Notes

Future versions of this will likely contain expansion to allow for integers in bases other than 10.
Extensions, including those mentioned in the corresponding MathWorld article, will may also be included in a future update.
As mentioned on the page Problems & Puzzles, Puzzle 341, there is a modified definition of multiplicative persistence due to Erdős wherein one only multiplies the nonzero digits at each step. This modification is not implemented herein but may be included in a future update.

License Information