Keith Number in Java

2025 年 5 月 5 日 | 阅读 6 分钟

在本节中,我们将学习什么是 Keith 数,并创建 Java 程序来检查给定的数是否是 Keith 数Keith 数程序Java 编码测试中经常出现。

Keith 数

一个正 n 位数 X 称为 Keith 数(或重复数字数),如果它排列在一个由其数字生成的特殊数列中。该特殊数列的前 n 项是 X 的数字,其他项则递归地计算为前 n 项的和。例如,197、19、742、1537 等。

Keith 数示例

让我们检查数字 742 是否是 Keith 数。

首先,我们将每个数字分开,例如 7、4、2

为了找到上面创建的数列的下一项,我们将这些数字相加(即 7+4+2),得到的结果(13)成为数列的下一项。

现在,数列变为 7、4、2、13

为了找到上面数列的下一项,我们将最后三项相加(即 13+2+4),得到的结果(19)成为数列的下一项。

现在,数列变为 7、4、2、13、19

为了找到上面数列的下一项,我们将最后三项相加(即 19+13+2),得到的结果(34)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34

为了找到上面数列的下一项,我们将最后三项相加(即 34+19+13),得到的结果(66)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34、66

为了找到上面数列的下一项,我们将最后三项相加(即 66+34+19),得到的结果(119)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34、66、119

为了找到上面数列的下一项,我们将最后三项相加(即 119+66+34),得到的结果(219)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34、66、119、219

为了找到上面数列的下一项,我们将最后三项相加(即 219+119+66),得到的结果(404)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34、66、119、219、404

为了找到上面数列的下一项,我们将最后三项相加(即 404+219+119),得到的结果(742)成为数列的下一项。

现在,数列变为 7、4、2、13、19、34、66、119、219、404、742

在这里,我们将停止这个过程,因为我们得到了与数列中的一项相同的数字(742)。因此,给定的数字 742 是一个 Keith 数

Keith Number in Java

从上面的例子中,我们观察到我们需要计算数列的项,直到我们得到与(我们开始时取的)相同的数字作为数列中的一项。

注意:如果给定的数字 (X) 有 n 位数字,我们将递归地加上数列的最后 n 项。由于数字 742 有三位数字,所以我们每次都加上数列的最后三项。

让我们看另一个例子。

Keith Number in Java

查找 Keith 数的步骤

  1. 读取或初始化一个数字 (X)。
  2. 从给定的数字 (X) 中分离出每个数字。
  3. 将所有 n 位数字相加。它给出数列的下一项。
  4. 再次,将数列的最后 n 项相加,以找到下一项。
  5. 重复步骤 4,直到我们得到与我们所取数字相同的项。

让我们在 Java 程序中实现上述步骤。

Keith 数 Java 程序

逻辑并不复杂。使用前 n 个数字的和来计算数列,其中 n 是数字的位数。如果数列中计算出的一个数字与输入数字相同,那么它就是一个 Keith 数。如果计算出的值大于输入数字,程序就会停止。

让我们创建一个 Java 程序并在其中实现上述逻辑。

KeithNumberExample1.java

输出

Yes, the given number is a Keith number.
Yes, the given number is a Keith number.
No, the given number is not a Keith number.

让我们创建另一个 Java 程序来查找所有包含相同位数数字的 Keith 数。

KeithNumberExample2.java

输出 1

Keith Number in Java

输出 2

Keith Number in Java

类似地,我们可以找到 d 位 Keith 数。下表总结了 d 位 Keith 数。

dd 位 Keith 数
214, 19, 28, 47, 61, 75
3197, 742
41104, 1537, 2208, 2580, 3684, 4788, 7385, 7647, 7909
531331, 34285, 34348, 55604, 62662, 86935, 93993
6120284, 129106, 147640, 156146, 174680, 183186, 298320, 355419, 694280, 925993
71084051, 7913837
811436171, 33445755, 44121607
9129572008, 251133297
10(无)
1124769286411 96189170155
12171570159070, 202366307758, 239143607789, 296658839738
131934197506555, 8756963649152
1443520999798747, 74596893730427, 97295849958669
15120984833091531, 270585509032586, 754788753590897
163621344088074041, 3756915124022254, 4362827422508274
1711812665388886672, 14508137312404344, 16402582054271374, 69953250322018194, 73583709853303061
18119115440241433462, 166308721919462318, 301273478581322148
191362353777290081176, 3389041747878384662, 5710594497265802190, 5776750370944624064, 6195637556095764016
2012763314479461384279, 27847652577905793413, 45419266414495601903
21855191324330802397989
227657230882259548723593
2326842994422637112523337, 36899277593852609997403, 61333853602129819189668
24229146413136585558461227
259838678687915198599200604