Merge pull request #1418 from shellhub/master

Added Sum Of Digits Algorithm
This commit is contained in:
Du Yuanchao
2020-08-16 23:07:44 +08:00
committed by GitHub
2 changed files with 63 additions and 0 deletions

View File

@ -143,6 +143,7 @@
* [PowRecursion](https://github.com/TheAlgorithms/Java/blob/master/Maths/PowRecursion.java)
* [PrimeCheck](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeCheck.java)
* [PrimeFactorization](https://github.com/TheAlgorithms/Java/blob/master/Maths/PrimeFactorization.java)
* [SumOfDigits](https://github.com/TheAlgorithms/Java/blob/master/Maths/SumOfDigits.java)
* [VampireNumber](https://github.com/TheAlgorithms/Java/blob/master/Maths/VampireNumber.java)
## MinimizingLateness

62
Maths/SumOfDigits.java Normal file
View File

@ -0,0 +1,62 @@
package Maths;
public class SumOfDigits {
public static void main(String[] args) {
assert
sumOfDigits(-123) == 6
&& sumOfDigitsRecursion(-123) == 6
&& sumOfDigitsFast(-123) == 6;
assert sumOfDigits(0) == 0
&& sumOfDigitsRecursion(0) == 0
&& sumOfDigitsFast(0) == 0;
assert sumOfDigits(12345) == 15
&& sumOfDigitsRecursion(12345) == 15
&& sumOfDigitsFast(12345) == 15;
}
/**
* Calculate the sum of digits of a number
*
* @param number the number contains digits
* @return sum of digits of given {@code number}
*/
public static int sumOfDigits(int number) {
number = number < 0 ? -number : number; /* calculate abs value */
int sum = 0;
while (number != 0) {
sum += number % 10;
number /= 10;
}
return sum;
}
/**
* Calculate the sum of digits of a number using recursion
*
* @param number the number contains digits
* @return sum of digits of given {@code number}
*/
public static int sumOfDigitsRecursion(int number) {
number = number < 0 ? -number : number; /* calculate abs value */
return number < 10 ? number : number % 10 + sumOfDigitsRecursion(number / 10);
}
/**
* Calculate the sum of digits of a number using char array
*
* @param number the number contains digits
* @return sum of digits of given {@code number}
*/
public static int sumOfDigitsFast(int number) {
number = number < 0 ? -number : number; /* calculate abs value */
char[] digits = (number + "").toCharArray();
int sum = 0;
for (int i = 0; i < digits.length; ++i) {
sum += digits[i] - '0';
}
return sum;
}
}