Related Articles
Digital Root (repeated digital sum) of square of an integer using Digital root of the given integer
• Last Updated : 20 Apr, 2021

Given an integer N, the task is to find the digital root N2 using the digital root of N.

Digital Root of a positive integer is calculated by adding the digits of the integer. If the resultant value is a single digit, then that digit is the digital root. If the resultant value contains two or more digits, those digits are summed and the process is repeated until a single-digit is obtained.

Examples:

Input: N = 15
Output:
Explanation:
152 = 225, 2+2+5 = 9

Input: N = 9
Output:

Approach: The idea is to find the Digital Root of N. Now we can find the digital root of N2 using the digital root of N by observing the below points :

• If the digital root of N is 1 or 8 then the digital root of N2 is always 1;
• If the digital root of N is 2 or 7 then the digital root of N2 is always 4;
• If the digital root of N is 3 or 6 or 9 then the digital root of N2 is always 9;
• If the digital root of N is 4 or 5 then the digital root of N2 is always 7;

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the``// above approach``#include ``using` `namespace` `std;` `// Function to find the digital``// root of the number``int` `digitalRootofN(string num)``{``    ``// If num is 0``    ``if` `(num.compare(``"0"``) == 0)``        ``return` `0;` `    ``// Count sum of digits under mod 9``    ``int` `ans = 0;``    ``for` `(``int` `i = 0; i < num.length(); i++)``        ``ans = (ans + num[i] - ``'0'``) % 9;` `    ``// If digit sum is multiple of 9,``    ``// 9, else remainder with 9.``    ``return` `(ans == 0) ? 9 : ans % 9;``}` `// Returns digital root of N * N``int` `digitalRootofNSquare(string N)``{``    ``// finding digital root of N``    ``int` `NDigRoot = digitalRootofN(N);` `    ``if` `(NDigRoot == 1 || NDigRoot == 8)``        ``return` `1;` `    ``if` `(NDigRoot == 2 || NDigRoot == 7)``        ``return` `4;` `    ``if` `(NDigRoot == 3 || NDigRoot == 6)``        ``return` `9;` `    ``if` `(NDigRoot == 4 || NDigRoot == 5)``        ``return` `7;``}` `// Driver Code``int` `main()``{``    ``string num = ``"15"``;``    ``cout << digitalRootofNSquare(num);` `    ``return` `0;``}`

## Java

 `// Java implementation of the``// above approach``import` `java.io.*;` `class` `GFG{`` ` `// Function to find the digital``// root of the number``static` `int` `digitalRootofN(String num)``{``    ` `    ``// If num is 0``    ``if` `(num.compareTo(``"0"``) == ``0``)``        ``return` `0``;`` ` `    ``// Count sum of digits under mod 9``    ``int` `ans = ``0``;``    ``for``(``int` `i = ``0``; i < num.length(); i++)``        ``ans = (ans + num.charAt(i) - ``'0'``) % ``9``;`` ` `    ``// If digit sum is multiple of 9,``    ``// 9, else remainder with 9.``    ``return` `(ans == ``0``) ? ``9` `: ans % ``9``;``}`` ` `// Returns digital root of N * N``static` `int` `digitalRootofNSquare(String N)``{``    ` `    ``// Finding digital root of N``    ``int` `NDigRoot = digitalRootofN(N);`` ` `    ``if` `(NDigRoot == ``1` `|| NDigRoot == ``8``)``        ``return` `1``;`` ` `    ``else` `if` `(NDigRoot == ``2` `|| NDigRoot == ``7``)``        ``return` `4``;`` ` `    ``else` `if` `(NDigRoot == ``3` `|| NDigRoot == ``6``)``        ``return` `9``;``    ``else``        ``return` `7``;``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``String num = ``"15"``;``    ` `    ``// Function call``    ``System.out.print(digitalRootofNSquare(num));``}``}` `// This code is contributed by code_hunt`

## Python3

 `# Python3 implementation of the``# above approach` `# Function to find the digital``# root of the number``def` `digitalRootofN(num):` `    ``# If num is 0``    ``if` `(num ``=``=` `(``"0"``)):``        ``return` `0``;` `    ``# Count sum of digits``    ``# under mod 9``    ``ans ``=` `0``;``    ``for` `i ``in` `range``(``0``, ``len``(num)):``        ``ans ``=` `(ans ``+` `ord``(num[i]) ``-` `ord``(``'0'``)) ``%` `9``;` `    ``# If digit sum is multiple of 9,``    ``# 9, else remainder with 9.``    ``return` `9` `if` `(ans ``=``=` `0``) ``else` `ans ``%` `9``;` `# Returns digital root of N * N``def` `digitalRootofNSquare(N):` `    ``# Finding digital root of N``    ``NDigRoot ``=` `digitalRootofN(N);``    ``if` `(NDigRoot ``=``=` `1` `or` `NDigRoot ``=``=` `8``):``        ``return` `1``;``    ``elif``(NDigRoot ``=``=` `2` `or` `NDigRoot ``=``=` `7``):``        ``return` `4``;``    ``elif``(NDigRoot ``=``=` `3` `or` `NDigRoot ``=``=` `6``):``        ``return` `9``;``    ``else``:``        ``return` `7``;` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``  ` `    ``num ``=` `"15"``;` `    ``# Function call``    ``print``(digitalRootofNSquare(num));` `# This code is contributed by shikhasingrajput`

## C#

 `// C# implementation of the``// above approach``using` `System;` `class` `GFG{`` ` `// Function to find the digital``// root of the number``static` `int` `digitalRootofN(``string` `num)``{``    ` `    ``// If num is 0``    ``if` `(num.CompareTo(``"0"``) == 0)``        ``return` `0;`` ` `    ``// Count sum of digits under mod 9``    ``int` `ans = 0;``    ``for``(``int` `i = 0; i < num.Length; i++)``        ``ans = (ans + num[i] - ``'0'``) % 9;`` ` `    ``// If digit sum is multiple of 9,``    ``// 9, else remainder with 9.``    ``return` `(ans == 0) ? 9 : ans % 9;``}`` ` `// Returns digital root of N * N``static` `int` `digitalRootofNSquare(``string` `N)``{``    ` `    ``// Finding digital root of N``    ``int` `NDigRoot = digitalRootofN(N);`` ` `    ``if` `(NDigRoot == 1 || NDigRoot == 8)``        ``return` `1;`` ` `    ``else` `if` `(NDigRoot == 2 || NDigRoot == 7)``        ``return` `4;`` ` `    ``else` `if` `(NDigRoot == 3 || NDigRoot == 6)``        ``return` `9;`` ` `    ``else``        ``return` `7;``}` `// Driver Code``public` `static` `void` `Main ()``{``    ``string` `num = ``"15"``;``    ` `    ``// Function call``    ``Console.Write(digitalRootofNSquare(num));``}``}` `// This code is contributed by code_hunt`

## Javascript

 ``
Output:
`9`

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up