Open in App
Not now

# Program for Sum of the digits of a given number

• Difficulty Level : Easy
• Last Updated : 05 Dec, 2022

Given a number, find the sum of its digits.

Examples :

Input: n = 687
Output: 21

Input: n = 12
Output: 3

Recommended Practice

Follow the below steps to solve the problem:

• Get the number
• Declare a variable to store the sum and set it to 0
• Repeat the next two steps till the number is not 0
• Get the rightmost digit of the number with help of the remainder ‘%’ operator by dividing it by 10 and adding it to the sum.
• Divide the number by 10 with help of ‘/’ operator to remove the rightmost digit.
• Print or return the sum

Below is the implementation of the above approach:

## C++

 `// C++ program to compute sum of digits in` `// number.` `#include ` `using` `namespace` `std;`   `/* Function to get sum of digits */` `class` `gfg {` `public``:` `    ``int` `getSum(``int` `n)` `    ``{` `        ``int` `sum = 0;` `        ``while` `(n != 0) {` `            ``sum = sum + n % 10;` `            ``n = n / 10;` `        ``}` `        ``return` `sum;` `    ``}` `};`   `// Driver code` `int` `main()` `{` `    ``gfg g;` `    ``int` `n = 687;`   `    ``// Function call` `    ``cout << g.getSum(n);` `    ``return` `0;` `}` `// This code is contributed by Soumik`

## C

 `// C program to compute sum of digits in` `// number.` `#include `   `/* Function to get sum of digits */` `int` `getSum(``int` `n)` `{` `    ``int` `sum = 0;` `    ``while` `(n != 0) {` `        ``sum = sum + n % 10;` `        ``n = n / 10;` `    ``}` `    ``return` `sum;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 687;`   `    ``// Function call` `    ``printf``(``" %d "``, getSum(n));` `    ``return` `0;` `}`

## Java

 `// Java program to compute` `// sum of digits in number.` `import` `java.io.*;`   `class` `GFG {`   `    ``/* Function to get sum of digits */` `    ``static` `int` `getSum(``int` `n)` `    ``{` `        ``int` `sum = ``0``;`   `        ``while` `(n != ``0``) {` `            ``sum = sum + n % ``10``;` `            ``n = n / ``10``;` `        ``}`   `        ``return` `sum;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `n = ``687``;`   `        ``// Function call` `        ``System.out.println(getSum(n));` `    ``}` `}`   `// This code is contributed by Gitanjali`

## Python3

 `# Python 3 program to` `# compute sum of digits in` `# number.`   `# Function to get sum of digits`     `def` `getSum(n):`   `    ``sum` `=` `0` `    ``while` `(n !``=` `0``):`   `        ``sum` `=` `sum` `+` `int``(n ``%` `10``)` `        ``n ``=` `int``(n``/``10``)`   `    ``return` `sum`     `# Driver code` `if` `__name__ ``=``=` `"__main__"``:` `    ``n ``=` `687`   `    ``# Function call` `    ``print``(getSum(n))`

## C#

 `// C# program to compute` `// sum of digits in number.` `using` `System;`   `class` `GFG {` `    ``/* Function to get sum of digits */` `    ``static` `int` `getSum(``int` `n)` `    ``{` `        ``int` `sum = 0;`   `        ``while` `(n != 0) {` `            ``sum = sum + n % 10;` `            ``n = n / 10;` `        ``}`   `        ``return` `sum;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `n = 687;`   `        ``// Function call` `        ``Console.Write(getSum(n));` `    ``}` `}`   `// This code is contributed by Sam007`

## PHP

 ``

## Javascript

 ``

Output

`21`

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

## How to compute in asingle line?

The below function has three lines instead of one line, but it calculates the sum in one line using for loop. It can be made one-line function if we pass the pointer to the sum.

Below is the implementation of the above approach:

## C++

 `#include ` `using` `namespace` `std;`   `/* Function to get sum of digits */` `class` `gfg {` `public``:` `    ``int` `getSum(``int` `n)` `    ``{` `        ``int` `sum;`   `        ``/* Single line that calculates sum */` `        ``for` `(sum = 0; n > 0; sum += n % 10, n /= 10)` `            ``;`   `        ``return` `sum;` `    ``}` `};`   `// Driver code` `int` `main()` `{` `    ``gfg g;` `    ``int` `n = 687;`   `    ``// Function call` `    ``cout << g.getSum(n);` `    ``return` `0;` `}` `// This code is contributed by Soumik`

## C

 `#include `   `/* Function to get sum of digits */` `int` `getSum(``int` `n)` `{` `    ``int` `sum;`   `    ``/* Single line that calculates sum */` `    ``for` `(sum = 0; n > 0; sum += n % 10, n /= 10)` `        ``;`   `    ``return` `sum;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 687;`   `    ``// Function call` `    ``printf``(``" %d "``, getSum(n));` `    ``return` `0;` `}`

## Java

 `// Java program to compute` `// sum of digits in number.` `import` `java.io.*;`   `class` `GFG {`   `    ``/* Function to get sum of digits */` `    ``static` `int` `getSum(``int` `n)` `    ``{` `        ``int` `sum;`   `        ``/* Single line that calculates sum */` `        ``for` `(sum = ``0``; n > ``0``; sum += n % ``10``, n /= ``10``)` `            ``;`   `        ``return` `sum;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `n = ``687``;`   `        ``// Function call` `        ``System.out.println(getSum(n));` `    ``}` `}`   `// This code is contributed by Gitanjali`

## Python3

 `# Function to get sum of digits`     `def` `getSum(n):`   `    ``sum` `=` `0`   `    ``# Single line that calculates sum` `    ``while``(n > ``0``):` `        ``sum` `+``=` `int``(n ``%` `10``)` `        ``n ``=` `int``(n``/``10``)`   `    ``return` `sum`     `# Driver code` `if` `__name__ ``=``=` `"__main__"``:` `    ``n ``=` `687`   `    ``# Function call` `    ``print``(getSum(n))`   `# This code is contributed by` `# Smitha Dinesh Semwal`

## C#

 `// C# program to compute` `// sum of digits in number.` `using` `System;`   `class` `GFG {` `    ``static` `int` `getSum(``int` `n)` `    ``{` `        ``int` `sum;`   `        ``/* Single line that calculates sum */` `        ``for` `(sum = 0; n > 0; sum += n % 10, n /= 10)` `            ``;`   `        ``return` `sum;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `n = 687;`   `        ``// Function call` `        ``Console.Write(getSum(n));` `    ``}` `}`   `// This code is contributed by Sam007`

## PHP

 ` 0; ``\$sum` `+= ``\$n` `% 10, ` `                                  ``\$n` `/= 10);` `    ``return` `\$sum``;` `}`   `// Driver Code` `\$n` `= 687;`   `// Function call` `echo``(getsum(``\$n``));`   `// This code is contributed by ` `// Smitha Dinesh Semwal.` `?>`

## Javascript

 ``

Output

`21`

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

## Sum of the digits of a given number using recursion:

Follow the below steps to solve the problem:

• Get the number
• Get the remainder and pass the next remaining digits
• Get the rightmost digit of the number with help of the remainder ‘%’ operator by dividing it by 10 and adding it to the sum.
• Divide the number by 10 with help of the ‘/’ operator to remove the rightmost digit.
• Check the base case with n = 0
• Print or return the sum

Below is the implementation of the above approach:

## C++

 `// C++ program to compute` `// sum of digits in number.` `#include ` `using` `namespace` `std;` `class` `gfg {` `public``:` `    ``int` `sumDigits(``int` `no)` `    ``{` `        ``if` `(no == 0) {` `            ``return` `0;` `        ``}`   `        ``return` `(no % 10) + sumDigits(no / 10);` `    ``}` `};`   `// Driver code` `int` `main(``void``)` `{` `    ``gfg g;`   `    ``// Function call` `    ``cout << g.sumDigits(687);` `    ``return` `0;` `}`

## C

 `// C program to compute` `// sum of digits in number.` `#include `   `int` `sumDigits(``int` `no)` `{` `    ``if` `(no == 0) {` `        ``return` `0;` `    ``}`   `    ``return` `(no % 10) + sumDigits(no / 10);` `}`   `// Driver code` `int` `main()` `{` `    ``// Function call` `    ``printf``(``"%d"``, sumDigits(687));` `    ``return` `0;` `}`

## Java

 `// Java program to compute` `// sum of digits in number.` `import` `java.io.*;`   `class` `GFG {`   `    ``/* Function to get sum of digits */` `    ``static` `int` `sumDigits(``int` `no)` `    ``{` `        ``if` `(no == ``0``) {` `            ``return` `0``;` `        ``}`   `        ``return` `(no % ``10``) + sumDigits(no / ``10``);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``// Function call` `        ``System.out.println(sumDigits(``687``));` `    ``}` `}`   `// This code is contributed by Gitanjali`

## Python3

 `# Python program to compute` `# sum of digits in number.`     `def` `sumDigits(no):` `    ``return` `0` `if` `no ``=``=` `0` `else` `int``(no ``%` `10``) ``+` `sumDigits(``int``(no``/``10``))`     `# Driver code` `if` `__name__ ``=``=` `"__main__"``:`   `    ``# Function call` `    ``print``(sumDigits(``687``))`   `# This code is contributed by` `# Smitha Dinesh Semwal`

## C#

 `// C# program to compute` `// sum of digits in number.` `using` `System;`   `class` `GFG {` `    ``/* Function to get sum of digits */` `    ``static` `int` `sumDigits(``int` `no)` `    ``{` `        ``return` `no == 0 ? 0 : no % 10 + sumDigits(no / 10);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``// Function call` `        ``Console.Write(sumDigits(687));` `    ``}` `}`   `// This code is contributed by Sam007`

## PHP

 ``

## Javascript

 ``

Output

`21`

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

## Sum of the digits of a given number with input as string:

When the number of digits of that number exceeds 1019 , we can’t take that number as an integer since the range of long long int doesn’t satisfy the given number. So take input as a string, run a loop from start to the length of the string and increase the sum with that character(in this case it is numeric)

Follow the below steps to solve the problem:

• Declare a variable sum equal to zero
• Run a loop from zero to the length of the input string
• Add the value of each character into the sum, by converting the character into it’s integer value
• Return sum

Below is the implementation of the above approach:

## C++14

 `// C++ implementation of the above approach` `#include ` `using` `namespace` `std;`   `int` `getSum(string str)` `{` `    ``int` `sum = 0;`   `    ``// Traversing through the string` `    ``for` `(``int` `i = 0; i < str.length(); i++) {` `        ``// Since ascii value of` `        ``// numbers starts from 48` `        ``// so we subtract it from sum` `        ``sum = sum + str[i] - 48;` `    ``}` `    ``return` `sum;` `}`   `// Driver Code` `int` `main()` `{` `    ``string st = ``"123456789123456789123422"``;`   `    ``// Function call` `    ``cout << getSum(st);` `    ``return` `0;` `}`

## Java

 `// Java implementation of the above approach` `import` `java.io.*;` `class` `GFG {`   `    ``static` `int` `getSum(String str)` `    ``{` `        ``int` `sum = ``0``;`   `        ``// Traversing through the string` `        ``for` `(``int` `i = ``0``; i < str.length(); i++) {`   `            ``// Since ascii value of` `            ``// numbers starts from 48` `            ``// so we subtract it from sum` `            ``sum = sum + str.charAt(i) - ``48``;` `        ``}` `        ``return` `sum;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``String st = ``"123456789123456789123422"``;`   `        ``// Function call` `        ``System.out.print(getSum(st));` `    ``}` `}`   `// This code is contributed by Dharanendra L V.`

## Python3

 `# Python3 implementation of the above approach` `def` `getSum(n):` `    ``# Initializing sum to 0` `    ``sum` `=` `0` `    ``# Traversing through string` `    ``for` `i ``in` `n:` `        ``# Converting char to int` `        ``sum` `=` `sum` `+` `int``(i)`   `    ``return` `sum`   `# Driver code`     `if` `__name__ ``=``=` `"__main__"``:` `    ``n ``=` `"123456789123456789123422"`   `    ``# Function call` `    ``print``(getSum(n))`

## C#

 `// C# implementation of the above approach` `using` `System;` `public` `class` `GFG {` `    ``static` `int` `getSum(String str)` `    ``{` `        ``int` `sum = 0;`   `        ``// Traversing through the string` `        ``for` `(``int` `i = 0; i < str.Length; i++) {`   `            ``// Since ascii value of` `            ``// numbers starts from 48` `            ``// so we subtract it from sum` `            ``sum = sum + str[i] - 48;` `        ``}` `        ``return` `sum;` `    ``}`   `    ``// Driver Code` `    ``static` `public` `void` `Main()` `    ``{` `        ``String st = ``"123456789123456789123422"``;`   `        ``// Function call` `        ``Console.Write(getSum(st));` `    ``}` `}`   `// This code is contributed by Dharanendra L V.`

## PHP

 ``

## Javascript

 ``

Output

`104`

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

## Sum of the digits of a given number using tail recursion:

Follow the below steps to solve the problem:

• Add another variable “Val” to the function and initialize it to ( Val = 0 )
• On every call to the function add the mod value (n%10) to the variable as “(n%10)+val” which is the last digit in n. Along with passing the variable n as n/10.
• So on the First call, it will have the last digit. As we are passing n/10 as n, It follows until n is reduced to a single digit.
• n<10 is the base case so When n < 10, then add the n to the variable as it is the last digit and return the val which will have the sum of digits

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ` `using` `namespace` `std;`   `// Function to check sum of digit using tail recursion` `int` `sum_of_digit(``int` `n, ``int` `val)` `{` `    ``if` `(n < 10) {` `        ``val = val + n;` `        ``return` `val;` `    ``}` `    ``return` `sum_of_digit(n / 10, (n % 10) + val);` `}`   `// Driver code` `int` `main()` `{` `    ``int` `num = 12345;`   `    ``// Function call` `    ``int` `result = sum_of_digit(num, 0);` `    ``cout << ``"Sum of digits is "` `<< result;` `    ``return` `0;` `}`   `// This code is contributed by subhammahato348`

## C

 `// C program for the above approach` `#include `   `// Function to check sum of digit using tail recursion` `int` `sum_of_digit(``int` `n, ``int` `val)` `{` `    ``if` `(n < 10) {` `        ``val = val + n;` `        ``return` `val;` `    ``}` `    ``return` `sum_of_digit(n / 10, (n % 10) + val);` `}`   `// Driver code` `int` `main()` `{` `    ``int` `num = 12345;`   `    ``// Function call` `    ``int` `result = sum_of_digit(num, 0);` `    ``printf``(``"Sum of digits is %d"``, result);` `    ``return` `0;` `}`   `// This code is contributed by Sania Kumari Gupta`

## Java

 `// Java program for the above approach` `import` `java.io.*;` `import` `java.lang.*;` `import` `java.util.*;`   `class` `sum_of_digits {`   `    ``// Function to check sum` `    ``// of digit using tail recursion` `    ``static` `int` `sum_of_digit(``int` `n, ``int` `val)` `    ``{` `        ``if` `(n < ``10``) {` `            ``val = val + n;` `            ``return` `val;` `        ``}` `        ``return` `sum_of_digit(n / ``10``, (n % ``10``) + val);` `    ``}`   `    ``// Driven code` `    ``public` `static` `void` `main(String args[])` `    ``{` `        ``int` `num = ``12345``;`   `        ``// Function call` `        ``int` `result = sum_of_digit(num, ``0``);` `        ``System.out.println(``"Sum of digits is "` `+ result);` `    ``}` `}`

## Python3

 `# Python3 program for the above approach`   `# Function to check sum` `# of digit using tail recursion`     `def` `sum_of_digit(n, val):`   `    ``if` `(n < ``10``):` `        ``val ``=` `val ``+` `n` `        ``return` `val`   `    ``return` `sum_of_digit(n ``/``/` `10``, (n ``%` `10``) ``+` `val)`   `# Driver code`     `if` `__name__ ``=``=` `"__main__"``:` `    ``num ``=` `12345`   `    ``# Function call` `    ``result ``=` `sum_of_digit(num, ``0``)`   `    ``print``(``"Sum of digits is"``, result)`   `# This code is contributed by subhammahato348`

## C#

 `// C# program for the above approach` `using` `System;`   `class` `GFG {`   `    ``// Function to check sum` `    ``// of digit using tail recursion` `    ``static` `int` `sum_of_digit(``int` `n, ``int` `val)` `    ``{` `        ``if` `(n < 10) {` `            ``val = val + n;` `            ``return` `val;` `        ``}` `        ``return` `sum_of_digit(n / 10, (n % 10) + val);` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `num = 12345;`   `        ``// Function call` `        ``int` `result = sum_of_digit(num, 0);`   `        ``Console.Write(``"Sum of digits is "` `+ result);` `    ``}` `}`   `// This code is contributed by subhammahato348`

## Javascript

 ``

Output

`Sum of digits is 15`

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

Please write comments if you find the above codes/algorithms incorrect, or find better ways to solve the same problem.

My Personal Notes arrow_drop_up
Related Articles