R Examples

R Program - Check Armstrong Number



A positive natural number is known as Armstrong number of order n if it can be expressed as the sum of each digits of the number raised to the power of n. Mathematically, it can be expressed as:


Armstrong Number

Examples:

153 = 13+53+33 = 1+125+27 = 153

371 = 33+73+13 = 27+343+1 = 371

1634 = 14+64+34+44 = 1+1296+81+256 = 1634


Method 1: Check Armstrong Number

In the example below, the MyNum is checked for Armstrong number using function called ArmStrongNum(). The function requires two parameters, first the number and second the number of digits in it. It calculates power of the digit using the Pow() function. Ssee the example below for syntax:

#Calculate power of a digit
Pow <- function(MyNum, n) {
  x <- 1
  while (n > 0) {
    x <- x*MyNum
    n <- n - 1    
  }
  return (x)  
}


ArmStrongNum <- function(MyNum, Order) {
  y <- MyNum
  sum <- 0
  while (y > 0) {
    x <- y %% 10
    sum <- sum + Pow(x, Order)
    y <- y %/% 10    
  }

  if (MyNum == sum) {
    cat(MyNum, "is a Armstrong Number.\n")
  } else {
    cat(MyNum, "is not a Armstrong Number.\n")  
  }
}

ArmStrongNum(371, 3)
ArmStrongNum(1634, 4)
ArmStrongNum(1000, 4)

The above code will give the following output:

371 is a Armstrong Number.
1634 is a Armstrong Number.
1000 is not a Armstrong Number.

Method 2: Armstrong Number of order n

In this example, ArmStrongNum function requires only one parameter, the number itself. The number of digits in the passed parameter is estimated inside the function.

#Calculate power of a digit
Pow <- function(MyNum, n) {
  x <- 1
  while (n > 0) {
    x <- x*MyNum
    n <- n - 1    
  }
  return (x)  
}

ArmStrongNum <- function(MyNum) {
  y <- MyNum
  sum <- 0
  Order <- 0
  #Find number of digit in the Number
  while (y > 0) {
    Order <- Order + 1
    y <- y %/% 10    
  }

  y <- MyNum
  while (y > 0) {
    x <- y %% 10
    sum <- sum + Pow(x, Order)
    y <- y %/% 10    
  }

  if (MyNum == sum) {
    cat(MyNum, "is a Armstrong Number.\n")
  } else {
    cat(MyNum, "is not a Armstrong Number.\n")
  }  
}

ArmStrongNum(153)
ArmStrongNum(9474)
ArmStrongNum(5000)

The above code will give the following output:

153 is a Armstrong Number.
9474 is a Armstrong Number.
5000 is not a Armstrong Number.