如何在Java中检查一个数是否为Keith数?


如果一个数可以由其数字组成的特殊序列排列,则称该数为Keith数。

之后,序列中的数字将通过将之前的数字相加来生成,直到数字超过输入数字。如果最终数字与输入数字相同,则结果将被确定。

在生成序列期间添加之前的数字时,请记住只添加第n个数字,其中n指的是原始输入数字中的位数。

在本文中,我们将学习如何使用Java编程语言检查一个数是否为Keith数。

举几个例子

例1

输入数字是19

让我们使用Keith数的逻辑来检查它:

通过分离19的数字,我们得到第一个序列= 1, 9。

现在将所有数字相加:1 + 9 = 10。

现在新的序列是1, 9, 10。

现在将最后两个数字相加:9 + 10 = 19。

所以新的序列是1, 9, 10, 19。

在这里我们可以看到序列的最后一个数字与我们的输入数字或原始数字相同。

因此,19是一个Keith数。

例2

输入数字是197

让我们使用Keith数的逻辑来检查它:

通过分离197的数字,我们得到第一个序列= 1, 9, 7。

现在将所有数字相加:1 + 9 + 7 = 17。

现在新的序列是1, 9, 7, 17。

现在将最后三个数字相加:9 + 7 + 17 = 33。

新的序列是1, 9, 7, 17, 33。

现在将最后三个数字相加:7 + 17 + 33 = 57。

新的序列是1, 9, 7, 17, 33, 57

如果我们遵循相同的步骤,我们将得到序列= 1, 9, 7, 17, 33, 57, 107, 197。

在这里我们可以看到序列的最后一个数字与我们的输入数字或原始数字相同。

因此,197是一个Keith数。

例3

输入数字是152

让我们使用Keith数的逻辑来检查它:

通过分离152的数字,我们得到第一个序列= 1, 5, 2。

现在将所有数字相加:1 + 5 + 2 = 8。

现在新的序列是1, 5, 2, 8。

现在将最后三个数字相加:5 + 2 + 8 = 15。

新的序列是1, 5, 2, 8, 15。

现在将最后三个数字相加:2 + 8 + 15 = 25。

新的序列是1, 5, 2, 8, 15, 25。

如果我们遵循相同的步骤,我们将得到序列= 1, 5, 2, 8, 15, 25, 48, 88, 161。

在这里我们可以看到序列的最后一个数字超过了我们的输入数字或原始数字。

因此,152不是一个Keith数。

其他一些Keith数的例子包括19、197、742、1537等。

算法

  • 步骤1 - 获取一个整数,可以通过初始化或用户输入获得。

  • 步骤2 - 声明一个数组来存储计算出的数字。

  • 步骤3 - 首先找到输入数字的位数。

  • 步骤4 - 然后,使用我们在循环内的算法,计算下一个值,直到值超过输入数字。

  • 步骤5 - 最后,我们将比较最后一个计算出的数字与输入数字,如果两者相同,我们将得出结论:输入数字是Keith数;否则,输入数字不是Keith数。

方法

我们提供了不同的方法来解决这个问题。

  • 使用静态输入值

让我们逐一查看程序及其输出。

方法:使用静态输入值

在这种方法中,将要求用户输入输入数字,然后使用该算法检查该数字是否为Keith数。

示例

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."); } }

输出

Given number: 14
14 is a Keith Number.

在本文中,我们探讨了如何使用不同的方法在Java中检查一个数是否为Keith数。

更新于:2022年10月27日

2K+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.