# Find the sum of the digits of a given number

I need to find the sum of the digits of the given number and repeat the process until the value lies between 1 to 9.

e.g if the input is 72457 then,

7+2+4+5+7 = 25

2+5 = 7

so , the function should return 7.

Also, if the input is a negative number like -72457 the function should return -7.

Here's what i tried,

int digitSum(int input1){

int flag=0;

if(input1<0)
flag=1;

int rem,sum=0;
int x=abs(input1);

while(x>0){
rem=x%10;
sum+=rem;
x=x/10;

}

int value = sum%9;

if(value==0){

if(flag==1)
return -9;

else
return 9;
}

else{

if(flag==1)
return -value;

else
return value;

}

}

• What if the input is 0? – Peter Taylor Mar 25 at 16:01
• You can shuffle the logic around a bit to simplify this by first having an int which represents the sign of the input number by dividing input / abs(input), which will give you either -1 or 1. Then, during your summation loop, do a comparison of != 0. so that you don't have to worry about the sign. And finish off by returning sum * sign – DJHenjin Mar 25 at 16:11
• n % 9 gets you most of the way there; you only need to adjust zero results to ±9, and you're done. – Toby Speight Mar 25 at 16:23

int digitSum(int input) {