Armstrong Numbers

Problem Statement

An Armstrong number of three digits is an integer such that the sum of the cubes of its digits is equal to the number itself. For example, 371 is an Armstrong number since 3**3 + 7**3 + 1**3 = 371.

Write a program to find all Armstrong number in the range of 0 and 999.

Solution

! ---------------------------------------------------------------
! This program computes all Armstrong numbers in the range of
! 0 and 999.  An Armstrong number is a number such that the sum
! of its digits raised to the third power is equal to the number
! itself.  For example, 371 is an Armstrong number, since
! 3**3 + 7**3 + 1**3 = 371.
! ---------------------------------------------------------------

PROGRAM  ArmstrongNumber
   IMPLICIT  NONE

   INTEGER :: a, b, c                   ! the three digits
   INTEGER :: abc, a3b3c3               ! the number and its cubic sum
   INTEGER :: Count                     ! a counter

   Count = 0
   DO a = 0, 9                          ! for the left most digit
      DO b = 0, 9                       !   for the middle digit
         DO c = 0, 9                    !     for the right most digit
            abc    = a*100 + b*10 + c   !        the number
            a3b3c3 = a**3 + b**3 + c**3 !        the sum of cubes
            IF (abc == a3b3c3) THEN     !        if they are equal
               Count = Count + 1        !           count and display it
               WRITE(*,*)  'Armstrong number ', Count, ': ', abc
            END IF
         END DO
      END DO
   END DO

END PROGRAM  ArmstrongNumber
Click here to download this program.

Program Input and Output

The following is the output from the above program. Thus, there are six Armstrong numbers in the range of 0 and 999.
Armstrong number 1: 0
Armstrong number 2: 1
Armstrong number 3: 153
Armstrong number 4: 370
Armstrong number 5: 371
Armstrong number 6: 407

Discussion