diff --git a/math/Armstrong-Number/Armstrong-Number.py b/math/Armstrong-Number/Armstrong-Number.py index 3802b2f..5b63593 100644 --- a/math/Armstrong-Number/Armstrong-Number.py +++ b/math/Armstrong-Number/Armstrong-Number.py @@ -1,3 +1,56 @@ +class ArmstrongChecker: + + def __init__(self, num): + self.num = num + self.original_num = num + self.num_digits = len(str(num)) + self.total = 0 + + def calculate(self): + temp = self.num + + while temp > 0: + digit = temp % 10 + self.total += digit ** self.num_digits + temp //= 10 + + def show_calculation(self): + temp = self.original_num + digits = [] + + while temp > 0: + digits.append(temp % 10) + temp //= 10 + + digits.reverse() + + calculation_parts = [f"{d}^{self.num_digits}" for d in digits] + print(f" {' + '.join(calculation_parts)}") + + values = [f"{d**self.num_digits}" for d in digits] + print(f" = {' + '.join(values)}") + print(f" = {self.total}") + + def check(self): + self.calculate() + + print(f"\nšŸ“Š Number: {self.original_num}") + print(f"šŸ“ Number of digits: {self.num_digits}") + + print(f"\nšŸ” Calculation:") + self.show_calculation() + + if self.total == self.original_num: + print(f"\nāœ… {self.original_num} is an Armstrong Number! šŸŽ‰") + else: + print(f"\nāŒ {self.original_num} is NOT an Armstrong Number.") + + print("\nšŸ’” Some Armstrong Numbers:") + print(" 1-digit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9") + print(" 3-digit: 153, 370, 371, 407") + print(" 4-digit: 1634, 8208, 9474") + + print("šŸ”¢ Armstrong Number Checker šŸ”¢") print("An Armstrong number equals the sum of its digits raised to the power of number of digits") print("Example: 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153\n") @@ -12,43 +65,5 @@ if num < 0: print("āŒ Please enter a positive number!") else: - original_num = num - num_digits = len(str(num)) if num > 0 else 1 - total = 0 - temp = num - - while temp > 0: - digit = temp % 10 - total += digit ** num_digits - temp //= 10 - - print(f"\nšŸ“Š Number: {original_num}") - print(f"šŸ“ Number of digits: {num_digits}") - - print(f"\nšŸ” Calculation:") - temp = original_num - digits = [] - while temp > 0: - digits.append(temp % 10) - temp //= 10 - digits.reverse() - - if num == 0: - digits = [0] - - calculation_parts = [f"{d}^{num_digits}" for d in digits] - print(f" {' + '.join(calculation_parts)}") - - values = [f"{d**num_digits}" for d in digits] - print(f" = {' + '.join(values)}") - print(f" = {total}") - - if total == original_num or num == 0: - print(f"\nāœ… {original_num} is an Armstrong Number! šŸŽ‰") - else: - print(f"\nāŒ {original_num} is NOT an Armstrong Number.") - - print("\nšŸ’” Some Armstrong Numbers:") - print(" 1-digit: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9") - print(" 3-digit: 153, 370, 371, 407") - print(" 4-digit: 1634, 8208, 9474") \ No newline at end of file + checker = ArmstrongChecker(num) + checker.check()