### Go Language - Program to Check Krishnamurthy Number

Hello everyone, today we will create a Go program to check if the given number is an Krishnamurthy number or not. Krishnamurthy number is also referred to as a Strong number.
A number is said to be Krishnamurthy if the factorial sum of all its digits is equal to that number.

For example,

Number = 40585
= 4! + 0! + 5! + 8! + 5!
= 1 * 2 * 3 * 4 + 1 + 1 * 2 * 3 * 4 * 5 + 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 + 1 * 2 * 3 * 4 * 5
= 24 + 1 + 120 + 40320 + 120
= 40585

Example 1: Go program that checks if the given number is a Krishnamurthy number or not.

/*Go program to check whether the given
* number is a Krishnamurthy number or not.
*/
package main

import "fmt"

// Main function
func main() {

//sample 1
number1 := 40585
KrishnamurthyNumber(number1)

//sample 2
number2 := 13789
KrishnamurthyNumber(number2)

//sample 3
number3 := 1009
KrishnamurthyNumber(number3)

}

func KrishnamurthyNumber(number int) {

//initialize sum to 0
sum := 0

//create a copy of the number
tempNumber := number

//perform operation until tempNumber will not equal to 0
for tempNumber != 0 {
/* calculate the factorial of the last digit
of the tempNumber and then add it to the sum
*/
sum = sum + Factorial(tempNumber%10)

// replace the value of tempNumber by tempNumber/10
tempNumber = tempNumber / 10
}
//If sum == number equal, number is krishnamurthy number
if sum == number {
fmt.Println(number, "is Krishnamurthy Number")
} else {
fmt.Println(number, "is not a Krishnamurthy Number")
}
}

//Method to calculate the factorial of the number
func Factorial(number int) int {
fact := 1
for i := 1; i <= number; i++ {
fact *= i
}
return fact
}

Output:

Example 2: Go program that checks if the number from the standard input is a Krishnamurthy number or not.

/*Go program to check whether the number from the standard input
* is a Krishnamurthy 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)
}

KrishnamurthyNumber(number)

}

func KrishnamurthyNumber(number int) {

//initialize sum to 0
sum := 0

//create a copy of the number
tempNumber := number

//perform operation until tempNumber will not equal to 0
for tempNumber != 0 {
/* calculate the factorial of the last digit
of the tempNumber and then add it to the sum
*/
sum = sum + Factorial(tempNumber%10)

// replace the value of tempNumber by tempNumber/10
tempNumber = tempNumber / 10
}

//If sum == number equal, number is krishnamurthy number
if sum == number {
fmt.Println(number, "is Krishnamurthy Number")
} else {
fmt.Println(number, "is not a Krishnamurthy Number")
}
}

//Method to calculate the factorial of the number
func Factorial(number int) int {
fact := 1
for i := 1; i <= number; i++ {
fact *= i
}
return fact
}

Output: