Untouchable Number in Java

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

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

不可触碰数

如果一个数 N 不能被表示为任何正数的真约数之和,则称 N 为不可触碰数。它也被称为非友数(nonaliquot numbers)。它是 OEIS 序列A005114

换句话说,我们可以说它是一个正整数,它不能表示为任何正整数(包括不可触碰数本身)的所有真约数之和。

性质

  • 任何不可触碰数都不是完全数。
  • 除了 2 和 5,所有不可触碰数都是复合数。

让我们通过一个例子来理解。

不可触碰数示例

数字4不是不可触碰数,因为它等于 9 的真约数之和,即 1+3 = 4。

数字5不可触碰数,因为它不等于任何正数的真约数之和。这意味着写 5 的唯一方法是 1+4。数字 4 可以整除一个数,数字 2 也可以。所以,1+4 不能是任何真约数之和。

其他一些不可触碰数有 2, 5, 52, 88, 96, 120, 124, 146, 162, 188, 206, 210, 216, 238, 246, 248, 262, 268, 276, 288, 290, 292, 304, 306, 322, 324, 326, 336, 342, 372, 406, 408, 426, 430, 448, 472, 474, 498, 516, 518, 520, 530, 540, 552, 556, 562, 576, 584, 612, 624, 626, 628, 658。

我们观察到数字5是唯一一个奇数的不可触碰数。

查找不可触碰数的步骤

  1. 读取或初始化一个数字 N。
  2. 找出给定数字 N 的所有约数。
  3. 检查 i 是否为 N 的约数。
    • 如果是,则将 i 加到变量 sum 中。
    • 否则,将 sum、i(约数)和 (num/i) 的结果加在一起。
    • 最后,将 1 加到变量 sum 中。
  4. 检查所有真约数之和是否等于数字 n,如果是,则该数字是不可触碰的,否则不是。

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

不可触碰数 Java 程序

在下面的程序中,我们找到数字 N 的真约数之和,并检查该和是否等于 N。如果和等于 N,则给定的数字 N 是一个不可触碰数。否则,不是不可触碰数。

UntouchableNumberExample.java

输出 1

Enter the number: 5
The given number is an untouchable number.

输出 2

Enter the number: 36
The given number is not an untouchable number.