From c8b9d601162b91d0931b8a65e80582d7dd87e40e Mon Sep 17 00:00:00 2001 From: Tejaswi1305 <163745239+Tejaswi1305@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:46:01 +0530 Subject: [PATCH] fix: handle zero case in Armstrong number check to avoid Math.log10(0) exception --- .../com/thealgorithms/maths/Armstrong.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/thealgorithms/maths/Armstrong.java b/src/main/java/com/thealgorithms/maths/Armstrong.java index 9a7a014ec99f..14e02380ea58 100644 --- a/src/main/java/com/thealgorithms/maths/Armstrong.java +++ b/src/main/java/com/thealgorithms/maths/Armstrong.java @@ -21,19 +21,24 @@ public class Armstrong { * @return {@code true} if the given number is an Armstrong number, {@code false} otherwise */ public boolean isArmstrong(int number) { - if (number < 0) { - return false; // Negative numbers cannot be Armstrong numbers - } - long sum = 0; - int totalDigits = (int) Math.log10(number) + 1; // get the length of the number (number of digits) - long originalNumber = number; + if (number < 0) { + return false; // Negative numbers cannot be Armstrong numbers + } + if (number == 0) { + return true; // 0 is an Armstrong number + } - while (originalNumber > 0) { - long digit = originalNumber % 10; - sum += (long) Math.pow(digit, totalDigits); // The digit raised to the power of total number of digits and added to the sum. - originalNumber /= 10; - } + long sum = 0; + int totalDigits = (int) Math.log10(number) + 1; + long originalNumber = number; - return sum == number; + while (originalNumber > 0) { + long digit = originalNumber % 10; + sum += (long) Math.pow(digit, totalDigits); + originalNumber /= 10; } + + return sum == number; +} + }