Check Armstrong Number in Go
In this tutorial, we will learn how to check if a number is an Armstrong number in Go. We will cover the basic concept of Armstrong numbers and implement a function to perform the check.
What is an Armstrong Number
An Armstrong number (also known as a narcissistic number) is a number that is equal to the sum of its own digits each raised to the power of the number of digits. For example, 153 is an Armstrong number because 1³ + 5³ + 3³ = 153.
Syntax
The syntax to check if a number is an Armstrong number in Go is:
import (
"fmt"
"math"
)
func isArmstrongNumber(num int) bool {
originalNum := num
var sum int
numDigits := int(math.Log10(float64(num))) + 1
for num != 0 {
digit := num % 10
sum += int(math.Pow(float64(digit), float64(numDigits)))
num /= 10
}
return sum == originalNum
}Example 1: Checking if a number is an Armstrong number
We can create a function to check if a given number is an Armstrong number by calculating the sum of its digits each raised to the power of the number of digits.
For example,
- Import the
fmtandmathpackages. - Define a function named
isArmstrongNumberthat takes one parameternumof typeint. - Store the original number in a variable
originalNum. - Initialize a variable
sumto 0 to hold the sum of the digits raised to the power of the number of digits. - Calculate the number of digits in the number using
math.Log10and add 1. - Use a
forloop to iterate through the digits of the number. - In each iteration, extract the last digit of the number, raise it to the power of the number of digits, and add it to
sum. - Remove the last digit from the number by dividing it by 10.
- After the loop, check if
sumis equal tooriginalNum. If true, returntrue; otherwise, returnfalse. - In the main function, call the
isArmstrongNumberfunction with sample numbers and print the results.
Go Program
package main
import (
"fmt"
"math"
)
func isArmstrongNumber(num int) bool {
originalNum := num
var sum int
numDigits := int(math.Log10(float64(num))) + 1
for num != 0 {
digit := num % 10
sum += int(math.Pow(float64(digit), float64(numDigits)))
num /= 10
}
return sum == originalNum
}
func main() {
// Sample numbers
numbers := []int{153, 9474, 9475}
// Check and print if each number is an Armstrong number
for _, number := range numbers {
result := isArmstrongNumber(number)
if result {
fmt.Printf("%d is an Armstrong number\n", number)
} else {
fmt.Printf("%d is not an Armstrong number\n", number)
}
}
}Output
153 is an Armstrong number 9474 is an Armstrong number 9475 is not an Armstrong number