w3resource

C Exercises: Check if a number is Keith or not


36. Keith Number Check Variants

Write a program in C to check if a number is Keith or not.

Test Data
Input a number : 1104

Sample Solution:

C Code:

#include <stdio.h>
#include <stdlib.h>

// Function to count the number of digits in a given number
int lenCount(int nm)
{
    int ctr = 0;
    while (nm > 0)
    {
        nm = nm / 10;
        ctr++;
    }
    return ctr;
}

int main()
{
    int num1 = 0, arr1[10], num2 = 0, flg = 0, i = 0, sum = 0;

    // Input section and description of Keith numbers
    printf("\n\n Check whether a number is Keith or not: \n");
    printf(" Sample Keith numbers: 197, 742, 1104, 1537, 2208, 2580, 3684, 4788, 7385..\n");
    printf(" --------------------------------------------------------------------------\n");
    printf(" Input a number : ");
    scanf("%d", &num1);
    num2 = num1;

    // Breaking the input number into an array of its digits
    for (i = lenCount(num2) - 1; i >= 0; i--)
    {
        arr1[i] = num1 % 10;
        num1 /= 10;
    }

    // Algorithm to check if the number is a Keith number
    while (flg == 0)
    {
        for (i = 0; i < lenCount(num2); i++)
            sum += arr1[i]; // Summing up the digits

        // Checking if the sum matches the original number or if it exceeds it
        if (sum == num2)
        {
            printf(" The given number is a Keith Number.\n");
            flg = 1;
        }
        if (sum > num2)
        {
            printf(" The given number is not a Keith number.\n");
            flg = 1;
        }

        // Rearranging the array by shifting elements
        for (i = 0; i < lenCount(num2); i++)
        {
            if (i != lenCount(num2) - 1)
                arr1[i] = arr1[i + 1];
            else
                arr1[i] = sum;
        }
        sum = 0;
    }
}

Sample Output:

 Input a number : 1104                                                                                        
 The given number is a Keith Number.

Visual Presentation:

C programming: Check if a number is Keith or not.

Flowchart:

Flowchart: Check if a number is Keith or not

For more Practice: Solve these Related Problems:

  • Write a C program to check if a number is a Keith number by generating its additive sequence.
  • Write a C program to verify Keith numbers using iterative digit sum sequences.
  • Write a C program to test the Keith property for numbers with varying digit lengths.
  • Write a C program to optimize Keith number checking using dynamic programming for sequence generation.

Go to:


PREV : Pell Series Variants.
NEXT : Keith Number Check with Explanation 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.



Follow us on Facebook and Twitter for latest update.