Narcissistic Number in Java

2025年5月10日 | 阅读 4 分钟

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

自恋数

自恋数是一个数字,它是其各位数字的幂之和,幂的指数是该数字的位数。换句话说,它是一个 m 位正数,等于其各位数字的 m 次幂之和。它也称为完美数(pluperfect)、加法完美数(Plus Perfect)或阿姆斯特朗数(Armstrong number)。它是 OEIS 序列 **A005188**。

让我们通过示例来理解自恋数。

自恋数示例

考虑以下数字。

153 = 13 + 53 + 33 = 1 + 125 +27 = 153

8208 = 84 + 24 + 04 + 84 = 4096 + 16 + 0 + 4096 = 8208

4210818 = 47 + 27 + 17 + 07 + 87 + 17 + 87 = 16384 + 128 + 1 + 0 + 2097152 + 1 + 2097152 = 4210818

我们看到给定数字的总位数作为幂,而每个数字的幂之和等于我们考虑的数字本身。因此,给定的数字是自恋数。

前几个自恋数是 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836, 912985153, 4679307774, 32164049650, 32164049651, 4338281769391370, 3706907995955475988644380, 19008174136254279995012734740, 186709961001538790100634132976990,以及 115132219018763992565095597973971522400。

查找自恋数的步骤

  1. 读取或初始化一个数字 N
  2. 计算给定数字 N 的位数,并将其存储在变量 power 中。
  3. 计算每个数字的幂并将结果加到变量 sum 中。
  4. 比较变量 sum 和给定数字 N。如果两者相等,则给定的数字是自恋数,否则不是。

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

自恋数 Java 程序

NarcissisticNumberExample1.java

输出 1

Enter the number: 93084
The given number 93084 is a narcissistic number.

输出 2

Enter the number: 57357
The given number 57357 is not a narcissistic number.

让我们找出 1 到 1000 之间所有的自恋数。

NarcissisticNumberExample2.java

输出

1
2
3
4
5
6
7
8
9
153
370
371
407