An Armstrong number is a magical number where the sum of each digit raised to the power of count of digits will give the number itself. It is also called a narcissistic number or a plus-perfect number.
An integer number of n digits can be called an Armstrong number if it satisfies the following condition,
abcd...=an+bn+cn+dn+...
where a,b,c,d... are the digits of the number and n is the count of digits of the number.
We have a detailed description of the concepts of Armstrong Numbers in our blog The basics of Armstrong numbers. It won't disappoint you, will surely help you to understand these numbers clearly.
Commonly we look for an Armstrong number program to check a 3 digit number is Armstrong or not, ie., If the sum of cubes of digits is the same as the number or not. So we have 3 digits Amstrong number program in our R program collection, you can refer to it also.
Here we are checking an Armstrong number without any digit constraints.
A number can call an Armstrong number if the sum of each digit raised to the power of n equals that number, where the number has n digits in it. We need to calculate the sum of the power n of each digit.
For example, take 371 the digits of 371 are 3,7 & 1. The cubes of each number are as shown below.
33 = 3 x 3 x 3 = 27
73 = 7 x 7 x 7 = 343
13 = 1 x 1 x 1 = 1
Then the sum of the cubes of the digit = 27+343+1
= 371
Given below are the steps used in the R program to read value and check if it is an Armstrong number. In this R program, we accept the user's input into num by providing an appropriate message to the user using 'prompt
' inside the readLine()
function. Find how many digits are there in the number and save it to n_digit because we need to calculate the powers according to this value only. Also, save the integer value of the number read into temp.
Now using a while loop
extract each digit and find the sum of the power raised to count of digits(n_digit) of each digit. After calculation, check if the sum is equal to the given number itself; if yes then it is an Amstrong number otherwise, it is not an Amstrong number.
STEP 1: Prompting appropriate messages to the user take user input using readline()
into variable num
STEP 2: Set n_digit with number of digits of the number entered
STEP 3: Initialize sum=0 and save the value of num to temp
STEP 4: Find the sum of the cube of each digit using while loop
with condition temp > 0
STEP 4: Check the sum with num, if they are equal then print
the number is an Armstrong number otherwise not.
num = readline(prompt="Enter a number: ") # read user input
n_digit <- nchar(num) # nchar() gives count of characters of string num
# initialize sum,temp
sum = 0
temp = as.integer(num)
# find the sum of the cube of each digit
while(temp > 0) {
digit = temp %% 10
sum = sum + (digit ^ n_digit)
temp = floor(temp / 10)
}
if(num == sum) {
print(paste(num, "is an Armstrong number"))
} else {
print(paste(num, "is not an Armstrong number"))
}
"Enter a number: " 9474 "9474 is an Armstrong number"