Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 55 additions & 40 deletions math/Armstrong-Number/Armstrong-Number.py
Original file line number Diff line number Diff line change
@@ -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")
Expand All @@ -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")
checker = ArmstrongChecker(num)
checker.check()
Loading