C Exercises: Check whether a given number is a Kaprekar number or not
6. Kaprekar Number Check Variants
Write a program in C to check whether a given number is a Kaprekar number or not.
Test Data
 Input a number: 45                                                                                 
Sample Solution:
C Code:
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
// Function to check if a number is a Kaprekar number
bool chkkaprekar(int n) {
    if (n == 1)
        return true; // If the number is 1, it's considered a Kaprekar number
    int sqr_n = n * n; // Square of the number
    int ctr_digits = 0; // Counter for the number of digits in the square
    // Count the number of digits in the square of the number
    while (sqr_n) {
        ctr_digits++;
        sqr_n /= 10;
    }
    sqr_n = n * n; // Reset the square of the number
    // Loop to check for Kaprekar property
    for (int r_digits = 1; r_digits < ctr_digits; r_digits++) {
        int eq_parts = pow(10, r_digits); // Calculate the divisor for splitting the square
        if (eq_parts == n)
            continue; // Skip when the divisor equals the number itself
        // Calculate the sum of the split parts of the square
        int sum = sqr_n / eq_parts + sqr_n % eq_parts;
        if (sum == n)
            return true; // If the sum of split parts equals the number, it's a Kaprekar number
    }
    return false; // If the conditions aren't met, it's not a Kaprekar number
}
// Main function
int main() {
    int kpno;
    printf("\n\n Check whether a given number is a Kaprekar number: \n");
    printf(" -------------------------------------------------------\n");
    printf(" Input a number: ");
    scanf("%d", &kpno); // Read an integer from the user and store it in 'kpno'
    // Check if the number is a Kaprekar number and print the result
    if (chkkaprekar(kpno) == true) {
        printf("%d is a Kaprekar number. \n", kpno);
    } else {
        printf("%d is not a Kaprekar number. \n", kpno);
    }
    return 0;
}
Sample Output:
Input a number: 45 45 is a Kaprekar number.
Visual Presentation:
 
Flowchart:
  
For more Practice: Solve these Related Problems:
- Write a C program to verify Kaprekar numbers using string manipulation for splitting squares.
- Write a C program to check if a number is Kaprekar by testing different square splits.
- Write a C program to list Kaprekar numbers along with details of their split parts.
- Write a C program to test the Kaprekar property for large numbers using high-precision arithmetic.
Go to:
PREV : Deficient Numbers Between 1 and 100 Variants.
NEXT : Kaprekar Numbers Less Than 1000 Variants.
C Programming Code Editor:
Contribute your code and comments through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
