Go Language - Program to Check Armstrong Number

Hello everyone, today we will create a Go program to check if the given number is an Armstrong number or not. An Armstrong number is a positive n-digit number that is equal to the sum of the nth powers of their digits. 

For example,

  • 2 is an Armstrong number.
         2 * 1 = 2

  • 1634 is an Armstrong number.
          1 + 1296 + 81 + 256 = 1643

  • 407 is an Armstrong number.
          64 +0+ 343 = 407


Some other Armstrong numbers are 1, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 4071634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836.


Example 1: Let’s create a Go program that checks if the given number is an Armstrong number or not.

/* Go program that checks if the given number is an
* Armstrong number or not.
*/
package main

import "fmt"

// Main function
func main() {
IsArmstrong(371)
IsArmstrong(431)
IsArmstrong(1)
IsArmstrong(1634)
}

// Function to calculate x raised to the power y
func Power(x int, y int) int {
if y == 0 {
return 1
}
if y%2 == 0 {
return Power(x, y/2) * Power(x, y/2)
}
return x * Power(x, y/2) * Power(x, y/2)
}

//Function to calculate order of the number
func Order(x int) int {
n := 0
for x != 0 {
n++
x = x / 10
}
return n
}

//Function to check if the number is Armstrong or not
func IsArmstrong(x int) {

// Calling order function
n := Order(x)
temp, sum := x, 0
for temp != 0 {
r := temp % 10
sum = sum + Power(r, n)
temp = temp / 10
}

// If satisfies Armstrong condition
if sum == x {
fmt.Println(x, "is an Armstrong")
} else {
fmt.Println(x, "Not an Armstrong")
}
}

Output:




Example 2: Input number from standard input,

/* Go program that checks if the number from the standard input is an
* Armstrong number or not.
*/
package main

import "fmt"

// Main function
func main() {
var number int
fmt.Println("Enter an integer value : ")

_, err := fmt.Scanf("%d", &number)

if err != nil {
fmt.Println(err)
}

IsArmstrong(number)
}

// Function to calculate x raised to the power y
func Power(x int, y int) int {
if y == 0 {
return 1
}
if y%2 == 0 {
return Power(x, y/2) * Power(x, y/2)
}
return x * Power(x, y/2) * Power(x, y/2)
}

//Function to calculate order of the number
func Order(x int) int {
n := 0
for x != 0 {
n++
x = x / 10
}
return n
}

//Function to check if the number is Armstrong or not
func IsArmstrong(x int) {

// Calling order function
n := Order(x)
temp, sum := x, 0
for temp != 0 {
r := temp % 10
sum = sum + Power(r, n)
temp = temp / 10
}

// If satisfies Armstrong condition
if sum == x {
fmt.Println(x, "is an Armstrong")
} else {
fmt.Println(x, "Not an Armstrong")
}
}

Output:

Comments

Popular posts from this blog

Learn Java 8 streams with an example - print odd/even numbers from Array and List

Java, Spring Boot Mini Project - Library Management System - Download

Java - Blowfish Encryption and decryption Example

Java - DES Encryption and Decryption example

Google Cloud Storage + Spring Boot - File Upload, Download, and Delete

ReactJS - Bootstrap - Buttons

Spring Boot 3 + Spring Security 6 + Thymeleaf - Registration and Login Example

File Upload, Download, And Delete - Azure Blob Storage + Spring Boot Example

Java - How to Count the Number of Occurrences of Substring in a String

Top 5 Java ORM tools - 2024