An algorithm to find the digital root of a given number.
Digital root: Sum of all digits of the number till there is an only a single digit.
Everything is written in ES6.
Example
Input: 5674 493193 Output: 4 // 5 + 6 + 7 + 4 = 22 = 2 + 2 = 4 2 // 4 + 9 + 3 + 1 + 9 + 3 = 29 = 2 + 9 = 11 = 1 + 1 = 2
We are going to use to two different methods to solve this.
- Using a recursive method which will take O(n ^ 2). Where n is the no of digits.
- Using mathematical formula which will tak O(1) time.
Recursive method O(n ^ 2).
Implementation
- We will create a function that will calculate the sum of all the digits.
- If the sum becomes single digit then we will return it.
- Else we will call the same function to calculate the sum again.
let digitalRoot = (n) => {
//calculate the sum of all the digits
let sum = 0;
while(parseInt(n) > 0){
let temp = n % 10;
sum = sum + temp;
n = parseInt(n / 10);
}
//Check if the sum is single digit
if(sum < 10){
return sum;
}
//call the function again
return digitalRoot(sum);
}
console.log(digitalRoot(257520643)); //7
console.log(digitalRoot(5674)); // 4
console.log(digitalRoot(493193)); // 2
console.log(digitalRoot(34758)); // 9
Time complexity: O(n ^ 2) where n is the no of digits.
Space complexity: O(n).
Time and Space complexity
- We are going to extract all the digits and sum them. After reducing if the number is not single digit then we repeat the step again. So it is n * (n - 1) * (n - 2) = O(n ^ 2) where n is the no of digits in the number.
- Our space complexity is determined by recursion depth. So suppose if the number is reducing by 1 digit in each then Space complexity is O(n) where n is the no of digits in the number.
Using mathematical method O(1).
Implementation
- We are going to subtract 1 from the number and then divide it by 9 and add 1 to its remainder.
let digitalRoot = (n) => {
return (n - 1) % 9 + 1;
}
console.log(digitalRoot(257520643)); //7
console.log(digitalRoot(5674)); // 4
console.log(digitalRoot(493193)); // 2
console.log(digitalRoot(34758)); // 9
Time complexity: O(1).
Space complexity: O(1).
Time and Space complexity
- We are using just simple mathematical formula so Time complexity is O(1).
- We are not using any extra space so Space complexity is O(1).