Java 程序将数字相加直到数字变为个位数

2025年3月17日 | 阅读 3 分钟

在本节中,我们将创建 Java 程序,该程序将对数字的各位进行相加,直到数字变为个位数。该问题也称为数字根问题

Java Program to Add Digits Until the Number Becomes a Single Digit Number

示例

假设,76345 是一个需要找到其各位数字之和直到变为个位数的数字。

7 + 6 + 3 + 4 + 5 = 25

接下来,我们将 2 和 5 相加。

2 + 5 = 7

我们得到 7,这是一个个位数。

暴力破解法

  • 计算所有数字的总和。
  • 使用总和(在上一步中计算)进行递归调用。
  • 如果数字小于 10,则返回该数字。

让我们在 Java 程序中实现上述逻辑。

SingleDigit.java

输出

The sum of digits is: 1

我们也可以在不使用任何循环和递归的情况下解决上述问题。该方法如下:

在这种方法中,首先检查数字是否可以被 9 整除。如果可以整除,则将各位数字相加,并检查总和是否可以被 9 整除。如果可以整除,则该数字可被 9 整除,否则不能。

例如,54 即 (5 + 4 = 9)。我们得到 9 作为数字的总和。因此,总和可以被 9 整除。

我们观察到,如果一个数字 (n) 可以被 9 整除,那么将其各位数字相加直到总和变为个位数,这个个位数总是 9。例如:

n = 2880

数字总和 = 2 + 8 + 8 + 0 = 18

数字 18 可以进一步相加形成一个一位数。

18 = 1 + 8 = 9

如果数字的形式是 9x,答案总是 9。如果数字的形式是 9x+k

一个数字可以是 9x 的形式,也可以是 9x + k 的形式。对于第一种情况,答案总是 9。对于第二种情况,答案总是 k,即余数。

  • 如果数字是 0,则返回 0。
  • 找到数字除以 9 的余数 (number%9)。
  • 如果余数为 0,则返回 9,否则返回余数。

让我们在 Java 程序中实现上述方法。

SumOfDigits.java

输出

The sum of digits is: 2

上述方法以O(1) 时间复杂度解决了问题。另一种以 O(1) 时间复杂度解决问题的方法如下: