Sum Of Digits of A Number

Problem Statement: Given an integer, find the sum of digits of that integer.

Examples:

Example 1:
Input: N = 472
Output: 13
Explanation: The digits in the number are 4,7 and 2. Summing them up gives us a value of 13

Example 2:
Input: N = 102
Output: 3
Explanation: The digits in the number are 0, 1, and 2. Summing them up gives us a value of 3

Solution:

DisclaimerDon’t jump directly to the solution, try it out yourself first.

Intuition: We can see that we somehow need to extract the individual digits of a number and sum them up. Is there any operator that we know of that can be used to extract digits from a number?

Modulus operation(%) : 10%3 = 1(Modulus operation gives us the remainder when we divide a fraction)

Divisor operation(/) : 10/3 = 3(Divisor operation gives us the quotient when we divide a fraction)

Note: Did you notice we get the last digit of a number when we perform a modulus operation with a value of 10

Approach: 

  • Get the last digit of the number
  • Add the last digit to a sum variable
  • Divide the number by 10 and repeat the process until the number is not zero

Code:

C++ Code

#include<bits/stdc++.h>
using namespace std;
int getSum(int n)
{
    int d,sum=0;
    while(n!=0)
    {
        d=n%10;
        sum+=d;
        n=n/10;
    }
    return sum;
}
int main()
{
    int n=472;
    cout<<"Sum of digits of the given number is "<<getSum(n);
    return 0;
}

Output: Sum of digits of the given number is 13

Time Complexity: O(N), N is the no. of digits

Space Complexity: O(1)

Java Code

import java.io.*;
class Test
{
static private int getSum(int n)
{
	int d;
	int sum = 0;
	while (n != 0)
	{
		d = n % 10;
		sum += d;
		n = n / 10;
	}
	return sum;
}
public static void main(String[] args)
{
	int n = 472;
	System.out.print("Sum of digits of the given number is "+getSum(n));
}
}

Output: Sum of digits of the given number is 13

Time Complexity: O(N), N is the no. of digits

Space Complexity: O(1)

Special thanks to Naman Daga for contributing to this article on takeUforward. If you also wish to share your knowledge with the takeUforward fam, please check out this article