How To Check Whether a Number is a Keith Number or Not in Java?


A number is said to be a Keith number, if it is arranged with a special sequence of numbers which are initially created by its digits.

After that the numbers of the sequence will be generated by adding its previous numbers till the number is exceeded from the input number. The results will be decided if the end number is the same as input number.

While adding the previous numbers during generating sequence remember to add nth numbers only where n refers to the number of digits in the original input number.

In this article we will see how to check if a number is a Keith number by using Java programming language.

To show you some instances

Instance-1

Input number is 19

Let’s check it by using the logic of Keith number −

By separating the digits of 19 we get our first sequence= 1, 9.

Now add all the digits= 1 + 9 = 10.

Now the new sequence is 1, 9, 10.

Now add the last two numbers = 9 + 10 = 19.

So the new sequence is 1, 9, 10, 19.

Here we can see the last number of the sequence is the same as our input number or the origin number.

Hence, 19 is a Keith number.

Instance-2

Input number is 197

Let’s check it by using the logic of Keith number −

By separating the digits of 197 we get our first sequence= 1, 9, 7.

Now add all the digits= 1 + 9 + 7 = 17.

Now the new sequence is 1, 9, 7, 17.

Now add the last three numbers = 9 + 7 + 17 = 33.

The new sequence is 1, 9, 7, 17, 33.

Now add the last three numbers = 7 + 17 + 33 = 57.

The new sequence is 1, 9, 7, 17, 33, 57

If we follow the same steps, we will get the sequence = 1, 9, 7, 17, 33, 57, 107, 197.

Here we can see the last number of the sequence is the same as our input number or the origin number.

Hence, 197 is a Keith number

Instance-3

Input number is 152

Let’s check it by using the logic of Keith number −

By separating the digits of 152 we get our first sequence= 1, 5, 2.

Now add all the digits= 1 + 5 + 2 = 8.

Now the new sequence is 1, 5, 2, 8.

Now add the last three numbers = 5 + 2 + 8 = 15.

The new sequence is 1, 5, 2, 8, 15.

Now add the last three numbers = 2 + 8 + 15 = 25.

The new sequence is 1, 5, 2, 8, 15, 25.

If we follow the same steps, we will get the sequence = 1, 5, 2, 8, 15, 25, 48, 88, 161.

Here we can see the last number of the sequence is exceeding our input number or the origin number.

Hence, 152 is not a Keith number.

Some other examples of Keith numbers include 19, 197, 742, 1537, etc.

Algorithm

  • Step 1 − Get an integer number either by initialization or by user input.

  • Step 2 − Declare an array for storing the calculated numbers.

  • Step 3 − Initially find the digits of the input number.

  • Step 4 − Then with the use of our algorithm inside the looping we calculated the next values till the value exceeding the input number.

  • Step 5 − Finally, we are comparing the last calculated number with the input number, if both are same then we will reach the conclusion that the input number is Keith number otherwise the input number is not the Keith number.

Approach

We have provided the solution in different approaches.

  • By Using Static Input Value

Let’s see the program along with its output one by one.

Approach: By Using Static Input Value

In this approach, the user will be asked to enter the input number and then by using the algorithm we can check whether the number is a Keith number or not.

Example

public class Main{ //main method public static void main(String[] args){ //declared an integer variable and initialized the value int inputNumber = 14; //print the given input number System.out.println("Given number: "+inputNumber); //store it to an another temporary variable int temporaryNumber = inputNumber; //type casting it to string String str = Integer.toString(inputNumber); //find the length and store the length value into a variable int len =str.length(); //declare a array which store the input number int store[]=new int[inputNumber]; int i, sum; //initiate the looping for break the input number into single digits for(i=len-1; i>=0; i--){ // store the digits into the same array store[i]=temporaryNumber % 10; temporaryNumber = temporaryNumber/10; } i=len; sum=0; //start iteration for calculating the next numbers while(sum<inputNumber){ sum = 0; for(int j=1; j<=len; j++){ sum=sum+store[i-j]; } //store the calculated numbers into the array store[i]=sum; i++; } //check the resultant number is matched to the input number or not if(sum==inputNumber) System.out.println(inputNumber + " is a Keith Number."); else System.out.println(inputNumber + " is not a Keith Number."); } }

Output

Given number: 14
14 is a Keith Number.

In this article, we explored how to check a number whether it is a Keith number or not in Java by using different approaches.

Updated on: 27-Oct-2022

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements