## C program to check if a number is a Kaprekar number or not:

In this *C programming tutorial*, we will learn how to check if a number is a *Kaprekar* number or not. The program will take a number as an input from the user and print if it is a Kaprekar number or not.

We will learn what is a *Kaprekar* number, how to check if a number is a *Kaprekar* number or not using *C*.

### Kaprekar number:

To check if a number is a *Kaprekar* number or not, we have to follow the below steps:

- Find the
*square*of the number. - Divide the number into two parts.
- If the sum of these two parts is equal to the number itself, it is called a
*Kaprekar*number.

For example, *2223* is a *Kaprekar* number. The square value of this number is *2223 * 2223 = 4941729*. If we divide *4941729* into two parts *494* and *1729*, the sum of these two numbers is *2223*, i.e. the number itself.

### Algorithm to check if a number is Kaprekar number or not:

We can follow the below algorithm to check if a number is *Kaprekar* or not:

- Take the number as input from the user.
- Find the square of the number.
- Find the total number of digits in the square value.
- By using a loop, break the square value into two parts and find the sum of these two parts.
- If the sum is equal to the number, it is a
*Kaprekar number*. Else, it is not.

### C program:

Below is the complete C program:

```
#include <stdio.h>
int square(int n)
{
return n * n;
}
int getDigitsCount(int n)
{
int digits = 0;
while (n)
{
digits++;
n /= 10;
}
return digits;
}
int getTenthPow(int pow)
{
int p = 1;
while (pow--)
{
p *= 10;
}
return p;
}
int isKaprekar(int n)
{
int s = square(n);
int digitsCount = getDigitsCount(s);
int sum;
if (n == 1)
{
return 1;
}
for (int i = 1; i < digitsCount; i++)
{
int tenthPow = getTenthPow(i);
if (s % tenthPow == 0)
{
continue;
}
sum = (s / tenthPow) + (s % tenthPow);
if (sum == n)
{
return 1;
}
}
return 0;
}
int main()
{
int no;
printf("Enter a number: ");
scanf("%d", &no);
if (isKaprekar(no))
{
printf("%d is a Kaprekar number\n", no);
}
else
{
printf("%d is not a Kaprekar number\n", no);
}
return 0;
}
```

Here,

*isKaprekar*method is used to check if a number is*Kaprekar*or not.- It takes a number as the parameter and returns
*1*or*0*.- It finds the square of the number and total digits in the square value first.
- If the number is
*1*, it returns*1*because 1 is a*Kaprekar*number. - By using the for loop, it divides the number in two parts and finds the sum of the parts. If the sum is equal to the number itself, it returns
*1*. - Else, it returns
*0*once the loop completes.

### Sample output:

It will print output as like below:

```
Enter a number: 2728
2728 is a Kaprekar number
Enter a number: 332
332 is not a Kaprekar number
Enter a number: 703
703 is a Kaprekar number
```

### You might also like:

- C program to check if a number is Abundant or Excessive
- C program to find if a number is a Deficient number or not
- C program isxdigit method example to check if a character is hexadecimal
- C program to find all Abundant numbers from 1 to 100
- C program to check if a character is lowercase using islower
- C program to check if a character is uppercase using isupper
- C program to print all Deficient numbers from 1 to 100
- C program to find all disarium numbers from 1 to 100