Undulating Number in Java

2025年5月9日 | 阅读 3 分钟

在本节中,我们将学习什么是起伏数,并创建Java 程序来检查给定的数字是否为起伏数。起伏数程序经常在 Java 编码面试和学术中出现。

起伏数

起伏数是指只包含两种数字,且交替数字相同的数字,即在十进制数字系统中,它必须是“ABABAB....”的形式。

有时它被限制为非平凡的起伏数,这些数要求至少有位数,并且 A 不等于 B。

起伏数示例

前几个起伏数是

101, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 454, 464, 474, 484, 494, ...

一些较大的起伏数有:1010、6363、80808、171717、989898989。

起伏数的性质

  1. 存在无限数量的起伏数。
  2. 对于任何 n >= 3,存在 9 × 9 = 81 个非平凡的 n 位起伏数,因为第一位可以有 9 个值(不能为 0),第二位可以有 9 个值(必须与第一位不同)。
  3. 任何具有偶数位数且至少四位数的起伏数都是复合数,因为:ABABAB...AB = 10101...01 × AB。
    例如,171717 = 10101 × 17。
  4. 具有奇数位数的起伏数是回文数。它们可以是素数。
    例如,151。
  5. 如果一个起伏数是 ABAB...AB,其中 AB 重复了 *n* 次,它可以表示为 AB × (102n - 1)/99。
    例如,171717 = 17 × (106 - 1) / 99。
  6. 如果一个起伏数是 ABAB...ABA,其中 AB 重复了 *n* 次,后跟一个 A,它可以表示为 (AB × 102n+1 - BA) / 99。
    例如,80808 = (80 * 105 - 08) / 99

起伏数 Java 程序

考虑以下示例,我们在其中检查给定的
数字是否为起伏数。

TestUndulatingNumber.java

输出 1

Undulating Number in Java

输出 2

Undulating Number in Java

通过这种方式,我们了解了起伏数以及用于
检查给定数字是否为起伏数的 Java 程序。