C Exercises: Explain whether a number is Keith or not
C Numbers: Exercise-37 with Solution
Write a program in C to check if a number is Keith or not (with explanation).
Test Data
Input a number : 1537
Sample Solution:
C Code:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
// Function to count the number of digits in a number
int lenCount(int nm) {
int ctr = 0;
while (nm > 0) {
nm = nm / 10;
ctr++;
}
return ctr;
}
// Main function
int main() {
// Declare variables
int num1 = 0, arr1[10], num2 = 0, flg = 0, i = 0, sum = 0, kk;
// Display information about 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 : ");
// Read input number
scanf("%d", &num1);
num2 = num1;
// Store individual digits of the input number in an array
for (i = lenCount(num2) - 1; i >= 0; i--) {
arr1[i] = num1 % 10;
num1 /= 10;
}
// Loop to check if the number is a Keith number or not
while (flg == 0) {
// Calculate the sum of the array elements
for (i = 0; i < lenCount(num2); i++)
sum += arr1[i];
// Check conditions for Keith number
if (sum == num2) {
flg = 1;
kk = 1; // Set flag for Keith number
}
if (sum > num2) {
flg = 1;
kk = 0; // Set flag for non-Keith number
}
// Display the current sequence of digits being checked
for (i = 0; i < lenCount(num2); i++) {
printf(" %d", arr1[i]);
if (i != lenCount(num2) - 1) {
arr1[i] = arr1[i + 1];
printf(" + ");
} else {
arr1[i] = sum;
printf(" = %d", arr1[i]);
}
}
printf("\n");
sum = 0;
}
// Display the result whether the number is a Keith number or not
if (kk == 1) {
printf(" The given number is a Keith Number.\n");
}
if (kk == 0) {
printf(" The given number is not a Keith Number.\n");
}
// Return 0 to indicate successful execution of the program
return 0;
}
Sample Output:
Input a number : 1537 1 + 5 + 3 + 7 = 16 5 + 3 + 7 + 16 = 31 3 + 7 + 16 + 31 = 57 7 + 16 + 31 + 57 = 111 16 + 31 + 57 + 111 = 215 31 + 57 + 111 + 215 = 414 57 + 111 + 215 + 414 = 797 111 + 215 + 414 + 797 = 1537 The given number is a Keith Number.
Visual Presentation:
Flowchart:
C Programming Code Editor:
Contribute your code and comments through Disqus.
Previous: Write a program in C to check if a number is Keith or not.
Next: Write a C programming to check whether a given number with base b (2 <= b<= 10) is a Niven number or not.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/c-programming-exercises/numbers/c-numbers-exercise-37.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics