Python Program to Generate Armstrong (Narcissistic) Number


This python program generates Armstrong number in an interval given by user. Armstrong number is also known as Narcissistic number.

A number is said to be Armstrong or Narcissistic Number if it is equal to the sum of its own digits raised to the power of the number of digits in a given number.

Armstrong Numbers Example, number 371 is Armstrong number because: 33 + 73 + 13 = 371

Try: Check Armstrong Number Online & Generate Armstrong Numbers Online

Python Source Code: Generate Armstrong Numbers


# Generate Armstrong numbers in interval

# Function to count digit in number
def count_digit(n):
    count = 0
    while n:
        n //= 10
        count += 1
    return count

# Function to check Armstrong
def is_armstrong(n):

    if n< 0:
        return False
    
    number_copy = n
    arm_sum = 0
    digit = count_digit(n)
    while n:
        remainder = n%10
        arm_sum += remainder**digit
        n //= 10

    return arm_sum == number_copy



# Reading interval from user
min_value = int(input('Enter minimum value: '))
max_value = int(input('Enter maximum value: '))

# Looping & displaying if it is Armstrong
# Here min_vale & max_value are included
print('Armstrong numbers from %d to %d are:' %(min_value, max_value))
for i in range(min_value, max_value+1):
    if is_armstrong(i):
        print(i, end=' ')

Armstrong Generation: Output

Enter minimum value: -10
Enter maximum value: 10000
Armstrong numbers from -10 to 10000 are:
0 1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 

Armstrong Generation: Code Explanation

We first read min_value and max_value from user. Function is_armstrong() is used to check whether a given number is Armstrong or not. We loop from min_value to max_value and pass each number to is_armstrong() function. If this function returns True, then we print it.