Open In App

Program for Sum of the digits of a given number

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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 <bits/stdc++.h>
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 <stdio.h>
 
/* 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




<?php
// PHP Code to compute sum
// of digits in number.
 
// Function to get
// $sum of digits
function getsum($n)
{
    $sum = 0;
    while ($n != 0)
    {
        $sum = $sum + $n % 10;
        $n = $n/10;
    }
    return $sum;
}
 
// Driver Code
$n = 687;
 
// Function call
$res = getsum($n);
echo("$res");
 
// This code is contributed by
// Smitha Dinesh Semwal.
?>


Javascript




<script>
 
// Javascript program to compute sum of digits in
// number.
 
/* Function to get sum of digits */
function getSum(n)
{
    var sum = 0;
    while (n != 0) {
        sum = sum + n % 10;
        n = parseInt(n / 10);
    }
    return sum;
}
 
// Driver code
var n = 687;
document.write(getSum(n));
 
</script>


Output

21

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

How to compute in a single 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 <bits/stdc++.h>
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 <stdio.h>
 
/* 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




<?php
// PHP Code for Sum the
// digits of a given number
 
// Function to get sum of digits
function getsum($n)
{
 
    // Single line that calculates $sum
    for ($sum = 0; $n > 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




<script>
 
// Javascript program to compute
// sum of digits in number.
 
// Function to get sum of digits
function getSum(n)
{
    let sum;
 
    // Single line that calculates sum
    for(sum = 0; n > 0;
        sum += n % 10,
        n = parseInt(n / 10))
        ;
    return sum;
}
 
// Driver code
let n = 687;
 
document.write(getSum(n));
 
// This code is contributed by subhammahato348
 
</script>


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 <iostream>
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 <stdio.h>
 
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




<?php
// PHP program to compute
// sum of digits in number.
function sumDigits($no)
{
return $no == 0 ? 0 : $no % 10 +
                      sumDigits($no / 10) ;
}
 
// Driver Code
 
// Function call
echo sumDigits(687);
 
// This code is contributed by aj_36
?>


Javascript




<script>
// Program to compute
// sum of digits in number
  // Function to get sum of digits
          
     function sumDigits(no)
     {
        if(no == 0){
          return 0 ;
        }
 
        return (no % 10) + sumDigits(parseInt(no/10)) ;
      }
       
// Driver code
      document.write(sumDigits(687));
       
// This is code is contributed by simranarora5sos
</script>


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 <bits/stdc++.h>
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




<?php
 // PHP implementation of the above approach
// PHP Code for Sum the
// digits of a given number
 
// Function to get sum of digits
function getsum($str)
{
 
      $sum = 0;
   
  // Traversing through the string
        for ($i = 0; $i<strlen($str); $i++) {
 
            //Converting char to int
            $sum = $sum + (int)$str[$i];
        }
   
    return $sum;
}
 
// Driver Code
$str = "123456789123456789123422";
 
// Function call
echo(getsum($str));
 
// This code is contributed by aadityapburujwale
 
?>


Javascript




<script>
// Javascript implementation of the above approach
 
function getSum(str)
{
    let sum = 0;
 
    // Traversing through the string
    for (let i = 0; i < str.length; i++)
    {
     
        // Since ascii value of
        // numbers starts from 48
        // so we subtract it from sum
        sum = sum + parseInt(str[i]);
    }
    return sum;
}
 
// Driver Code
let st = "123456789123456789123422";
document.write(getSum(st));
 
// This code is contributed by subhammahato348.
</script>


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 <bits/stdc++.h>
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 <stdio.h>
 
// 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




<script>
 
// Javascript program for the above approach
 
// Function to check sum
// of digit using tail recursion
function sum_of_digit(n, val)
{
    if (n < 10)
    {
        val = val + n;
        return val;
    }
    return sum_of_digit(parseInt(n / 10),
    (n % 10) + val);
}
 
// Driver code
    let num = 12345;
    let result = sum_of_digit(num, 0);
     
    document.write("Sum of digits is " + result);
 
// This code is contributed by subhammahato348
 
</script>


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.



Last Updated : 05 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads