# Wolfram Function Repository

Instant-use add-on functions for the Wolfram Language

Function Repository Resource:

Compute the additive digital root of an integer

Contributed by:
Christopher Stover

ResourceFunction["AdditiveDigitalRoot"][ returns the additive digital root of |

Starting with a non-negative integer *n*, add its digits, then add the digits of the resulting number, etc., until the result has only one digit. The one-digit integer marking the stopping point of this process is called the additive digital root of *n*.

As an example, consider *n*=1191:

Adding its digits yields 1+1+9+1=12.

Adding the digits of the result yields 1+2=3. Because 3 is a single-digit number, the process stops.

Because the integer marking the termination of the process is 3, ResourceFunction["AdditiveDigitalRoot"][1191] returns 3.

The additive digital root of a non-negative integer *n* is sometimes called its digital root (sans "additive"), which is denoted dr(*n*). It is also sometimes referred to as the repeated digital sum of *n*.

ResourceFunction["AdditiveDigitalRoot"] threads elementwise over lists.

Compute the additive digital root of 1191:

In[1]:= |

Out[1]= |

AdditiveDigitalRoot threads elementwise over lists:

In[2]:= |

Out[2]= |

Compute the additive digital roots of the first 100 integers (OEIS A010888):

In[3]:= |

Out[3]= |

The result returned by AdditiveDigitalRoot can be manually computed using NestWhileList:

In[4]:= |

Out[4]= |

There is a well-known closed formula for the additive digital root:

In[5]:= |

Out[5]= |

The additive digital root of an integer can also be manually computed with no high-level functions:

In[6]:= |

Out[6]= |

In[7]:= |

Out[7]= |

In[8]:= |

Out[8]= |

In[9]:= |

Out[9]= |

In[10]:= |

Out[10]= |

Because *testint3* is a single-digit integer, the process terminates here, and because *testint3* equals 1, the additive digital root of *testint1*=1234 is equal to 1:

In[11]:= |

Out[11]= |

The number of iterations required to reach the end of the digit addition process is called the additive persistence and is returned by the resource function AdditivePersistence:

In[12]:= |

Out[12]= |

In[13]:= |

Out[13]= |

In[14]:= |

Out[14]= |

In[15]:= |

Out[15]= |

The multiplicative analogue of the additive digital root is called the multiplicative digital root and is returned by the resource function MultiplicativeDigitalRoot:

In[16]:= |

Out[16]= |

In[17]:= |

Out[17]= |

In[18]:= |

Out[18]= |

In[19]:= |

Out[19]= |

AdditiveDigitalRoot requires its input to be non-negative:

In[20]:= |

Out[20]= |

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

This work is licensed under a Creative Commons Attribution 4.0 International License