In this tutorial, we will write a Keith number in C++. It is one of the most asked questions in an interview. Before that, you may go through the following topic in C programming.

## What is Keith Number?

A positive n digit number x is called a Keith number or repfigit number (repetitive Fibonacci-like digit) if it is arranged in a special number sequence generated using its digits. This sequence has n terms as digit of x and the next term is determined by the sum of previous n terms and so on. And if the number x falls under this sequence then x is a Keith Number. **Example**: 19, 742, etc

**Explanation:** Consider the number 742. Go through the following steps:

First separate the digit, 7, 4, 2.

To find the next term, add the digits, 7+4+2 = 13

New Series:** 7, 4, 2, 13.**

To find the next term, add the last three digits of the above sequence, **13+2+4=19**

New Series:** 7, 4, 2, 13, 19**.

To find the next term, add the last three digits of the above sequence, **19+13+2=34**

New Series: **7, 4, 2, 13, 19, 34**.

To find the next term, add the last three digits of the above sequence, **34+19+13=66**

New Series: **7, 4, 2, 13, 19, 34, 66.**

To find the next term, add the last three digits of the above sequence, **66+34+19=119**

New Series: **7, 4, 2, 13, 19, 34, 66, 119.**

To find the next term, add the last three digits of the above sequence, **119+66+34=219**

New Series: **7, 4, 2, 13, 19, 34, 66, 119, 219**.

To find the next term, add the last three digits of the above sequence, **219+119+66=404**

New Series: **7, 4, 2, 13, 19, 34, 66, 119, 219, 404**.

To find the next term, add the last three digits of the above sequence, **404+219+119=742**

New Series: **7, 4, 2, 13, 19, 34, 66, 119, 219, 404, 742**.

Now we will stop as we got the number **742 **as the term of the series. Hence **742 **is a Keith Number.

**C++ Program to check whether the Number is Keith Number or not**

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <bits/stdc++.h> using namespace std; int digitCount(int n) { int counter = 0; while (n > 0) { n = n / 10; counter++; } return counter; } int main() { int num1 = 0, arr1[10], temp = 0, flag = 0, i = 0, sum = 0; cout << "Enter a number: "; cin >> num1; temp = num1; for (i = digitCount(temp) - 1; i >= 0; i--) { arr1[i] = num1 % 10; num1 /= 10; } while (flag == 0) { for (i = 0; i < digitCount(temp); i++) sum += arr1[i]; if (sum == temp) { cout << "The entered number is a Keith Number\n"; flag = 1; } if (sum > temp) { cout << "The entered number is NOT a Keith Number\n"; flag = 1; } for (i = 0; i < digitCount(temp); i++) { if (i != digitCount(temp) - 1) arr1[i] = arr1[i + 1]; else arr1[i] = sum; } sum = 0; } } |

**Output:**

`//Run 1`

Enter a number: 197

The entered number is a Keith Number

//Run 2

Enter a number: 15

The entered number is NOT a Keith number