In this post, we will learn** how to check whether a number is Krishnamurthy number or not using C** Programming language. But before that, let’s first learn about Krishnamurthy numbers.

**Krishnamurthy number **is a number which is equal to the sum of the factorials of its digits. For example: **145 **is a Krishnamurthy number because **145 = 1! + 4! + 5! = 1 + 24 + 120 = 145**.

We will check for krishnamurthy number using the following approaches:

- Using For Loop
- Using While Loop

So, without further ado, let’s begin this tutorial.

**C Program to Check If the Number is Krishnamurthy Number or Not Using For Loop**

// C Program to Check If the Number is Krishnamurthy Number or Not #include <stdio.h> int main(){ int num, i, rem, temp, fact, sum = 0; // Asking for input printf("Enter a number: "); scanf("%d", &num); for (temp = num; temp > 0; temp = temp/10){ fact = 1; rem = temp % 10; for (i = 1; i <= rem; i++){ fact = i * fact; } sum = sum + fact; } // Checking for krishnamurthy number if (num == sum){ printf("%d is a krishnamurthy number.", num); } else{ printf("%d is not a krishnamurthy number.", num); } return 0; }

**Output 1**

```
Enter a number: 145
145 is a krishnamurthy number.
```

**Output 2**

```
Enter a number: 123
123 is not a krishnamurthy number.
```

**How Does This Program Work ?**

int num, i, rem, temp, fact, sum = 0;

In this program, we have declared** 6 integer data type** variables named **num**,** i**, **rem**, **temp**, **fact** and **sum**.

// Asking for input printf("Enter a number: "); scanf("%d", &num);

The user is asked to enter a number to check for krishnamurthy number.

for (temp = num; temp > 0; temp = temp/10){ fact = 1; rem = temp % 10; for (i = 1; i <= rem; i++){ fact = i * fact; } sum = sum + fact; }

Suppose the entered number is **145**, then:

**1st For Loop Iteration: for (temp = 145; 145 > 0; 145 = 145/10)**

fact = 1

rem = 145 % 10 = 5

**Now, for (i = 1; i < = 5; i++)**

- After 1st iteration: fact = 1 * 1 = 1
- After 2nd iteration: fact = 2 * 1 = 2
- After 3rd iteration: fact = 3 * 2 = 6
- After 4th iteration: fact = 4 * 6 = 24
- After 5th iteration: fact = 5 * 24 = 120

So, we get the **sum = sum + fact = 0 + 120 = 120**.

**2nd For Loop Iteration: for (temp = 14; 14 > 0; 14 = 14/10)**

fact = 1

rem = 14 % 10 = 4

**Now, for (i = 1; i < = 4; i++)**

- After 1st iteration: fact = 1 * 1 = 1
- After 2nd iteration: fact = 2 * 1 = 2
- After 3rd iteration: fact = 3 * 2 = 6
- After 4th iteration: fact = 4 * 6 = 24

Now, the **sum = sum + fact = 120 + 24 = 144**.

**3rd For Loop Iteration: for (temp = 1; 1 > 0; 1 = 1/10)**

fact = 1

rem = 1 % 10 = 1

**Now, for (i = 1; i < = 4; i++)**

- After 1st iteration: fact = 1 * 1 =
**1**

Finally, the **sum becomes = sum + fact = 144 + 1 = 145**.

// Checking for krishnamurthy number if (num == sum){ printf("%d is a krishnamurthy number.", num); } else{ printf("%d is not a krishnamurthy number.", num); }

Now, we check whether the sum of the factorial of the digits is equal to the original number or not.

If the first condition is** True**, then we print that the entered number is a** Krishnamurthy number**.

Otherwise, we print that the entered number is **not a Krishnamurthy number**.

**C Program to Check Krishnamurthy Number Using While Loop**

// C Program to Check Krishnamurthy Number Using While Loop #include <stdio.h> int main(){ int num, rem, fact, temp, sum = 0; // Asking for input printf("Enter a number: "); scanf("%d", &num); // Assigning a temporary variable temp = num; while (temp != 0){ rem = temp % 10; fact = 1; // Finding factorial of the remainder for (int i = 1; i <= rem; i++){ fact = i * fact; } sum = sum + fact; temp = temp / 10; } // Checking krishnamurthy number if (num == sum){ printf("%d is a krishnamurthy number.", num); } else{ printf("%d is not a krishnamurthy number.", num); } return 0; }

**Output**

```
Enter a number: 40585
40585 is a krishnamurthy number.
```

**Conclusion**

I hope after going through this post, you understand** how to check whether a number is a Krishnamurthy number or not using C** Programming language.

If you have any doubt regarding the program, then contact us in the comment section. We will be delighted to assist you.

**Also Read:**