Tutorialspoint.dev

Check if a number is a Krishnamurthy Number or not

A Krishnamurthy number is a number whose sum of the factorial of digits is equal to the number itself. For example 145, sum of factorial of each digits:
1! + 4! + 5! = 1 + 24 + 120 = 145

Examples:

Input : 145
Output : YES
Explanation: 1! + 4! + 5! = 
1 + 24 + 120 = 145, which is equal to input,
hence YES.

Input : 235
Output : NO
Explanation: 2! + 3! + 5! = 
2 + 6 + 120 = 128, which is not equal to input, 
hence NO.


The idea is simple, we compute sum of factorials of all digits and then compare the sum with n.

C++

// C++ program to check if a number
// is a krishnamurthy number
#include <bits/stdc++.h>
using namespace std;
  
// Function to calculate the factorial of any number
int factorial(int n)
{
    int fact = 1;
    while (n != 0) {
        fact = fact * n;
        n--;
    }
    return fact;
}
  
// function to Check if number is krishnamurthy
bool isKrishnamurthy(int n)
{
    int sum = 0;
  
    int temp = n;
    while (temp != 0) {
        // calculate factorial of last digit
        // of temp and add it to sum
        sum += factorial(temp % 10);
  
        // replace value of temp by temp/10
        temp = temp / 10;
    }
  
    // Check if number is krishnamurthy
    return (sum == n);
}
  
// Driver code
int main()
{
    int n = 145;
    if (isKrishnamurthy(n))
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

Java

// Java program to check if a number
// is a krishnamurthy number.
import java.util.*;
import java.io.*;
  
class Krishnamurthy {
    // function to calculate the factorial
    // of any number
    static int factorial(int n)
    {
        int fact = 1;
        while (n != 0) {
            fact = fact * n;
            n--;
        }
        return fact;
    }
  
    // function to Check if number is krishnamurthy
    static boolean isKrishnamurthy(int n)
    {
        int sum = 0;
  
        int temp = n;
        while (temp != 0) {
            // calculate factorial of last digit
            // of temp and add it to sum
            sum += factorial(temp % 10);
  
            // replace value of temp by temp/10
            temp = temp / 10;
        }
  
        // Check if number is krishnamurthy
        return (sum == n);
    }
  
    // Driver code
    public static void main(String[] args)
    {
        int n = 145;
        if (isKrishnamurthy(n))
            System.out.println("YES");
        else
            System.out.println("NO");
    }
}

Python

# Python program to check if a number
# is a krishnamurthy number
  
# function to calculate the factorial
# of any number
def factorial(n) :
    fact = 1;
    while (n != 0) :
        fact = fact * n;
        n = n - 1
    return fact
  
# function to Check if number is
# krishnamurthy
def isKrishnamurthy(n) :
    sum = 0
    temp = n
    while (temp != 0) :
  
        # calculate factorial of last digit
        # of temp and add it to sum
        sum = sum + factorial( temp % 10)
  
        # replace value of temp by temp / 10
        temp = temp / 10;
          
    # Check if number is krishnamurthy
    return (sum == n)
  
# Driver code
n = 145
if (isKrishnamurthy(n)) :
    print "YES"
else :
    print "NO"
  
  
# This code is contributed by Nikita Tiwari

C#

// C# program to check if a number
// is a krishnamurthy number.
using System;
  
class GFG {
      
    // function to calculate the
    // factorial of any number
    static int factorial(int n)
    {
        int fact = 1;
          
        while (n != 0) {
            fact = fact * n;
            n--;
        }
          
        return fact;
    }
  
    // function to Check if number is
    // krishnamurthy
    static bool isKrishnamurthy(int n)
    {
        int sum = 0;
  
        int temp = n;
        while (temp != 0) {
              
            // calculate factorial of
            // last digit of temp and
            // add it to sum
            sum += factorial(temp % 10);
  
            // replace value of temp
            // by temp/10
            temp = temp / 10;
        }
  
        // Check if number is
        // krishnamurthy
        return (sum == n);
    }
  
    // Driver code
    public static void Main()
    {
        int n = 145;
        if (isKrishnamurthy(n))
            Console.Write("YES");
        else
            Console.Write("NO");
    }
}
  
// This code is contributed by nitin mittal.

PHP

<?php
// PHP program to check if a number
// is a krishnamurthy number
  
// Function to find Factorial 
// of any number
function factorial($n)
{
    $fact = 1;
    while($n != 0)
    {
        $fact = $fact * $n;
        $n--;
    }
      
    return $fact;
}
  
// function to Check if number
// is krishnamurthy
function isKrishnamurthyNumber($n)
{
    $sum = 0;
      
    // Storing the value in
    // other variable
    $temp = $n;
      
    while($temp != 0)
    {
        // calculate factorial of last digit
        // of temp and add it to sum
        $sum = $sum + factorial($temp % 10);
          
        // Integer Division
        // replace value of temp by temp/10
        $temp = intdiv($temp, 10);
    }
      
    // Check if number is krishnamurthy
    return $sum == $n;
}
  
// Driver code
$n = 145;
  
if (isKrishnamurthyNumber($n))
    echo "YES";
else
    echo "NO";
  
  
// This code is contributed by akash7981
?>


Output:

YES

Interestingly, there are exactly four krishnamurthy numbers i.e. 1, 2, 145 and 40585 known to us.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter