Practical Number in Java2025年5月8日 | 阅读6分钟 在本节中,我们将学习什么是实际数,并创建 Java 程序 来检查给定的数字是否为实际数。实际数程序经常在 Java 编码面试和学术中被问到。 实际数如果一个数 X 的所有小于 X 的数 Y (Y < X) 都可以写成 X 的一个唯一真约数之和,则称 X 为Java 中的实际数。请注意,一个数的真约数不包括该数本身。 查找实际数的步骤 步骤 1:将一个数字赋给变量。 步骤 2:找出给定数字的真约数。 步骤 3:将这些约数存储在列表中。 步骤 4:逐个取出小于给定数字的所有数字(1 到给定数字 - 1),并尝试从列表(在步骤 3 中找到)中找到一个子集,其总和等于取出的数字。 步骤 5:检查从 1 到给定数字 - 1 的每个数字是否都能找到子集。如果找到子集,则给定数字是实际数;否则不是。 实际数示例给定 X = 10 则 X 的真约数为:1, 2, 5 小于 10 的所有数字为 Y = {1, 2, 3, 4, 5, 6, 7, 8, 9} 检查 Y 中的每个数字是否存在。 1 = 1 (1 是 X 的真约数) 2 = 2 (2 也是 X 的真约数) 3 = 1 + 2 (1 & 2 都是 X 的真约数。而且它们是唯一的) 4 = 2 + 2 (2 是 X 的真约数。但是,2 出现了两次,不唯一) 因此,我们找到了至少一个不满足所述条件的数字。所以,数字10不是实际数。 给定 X = 12 则 X 的真约数为:1, 2, 3, 4, 6 小于 12 的所有数字为 Y = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11} 检查 Y 中的每个数字是否存在。 1 = 1 (1 是 X 的真约数) 2 = 2 (2 也是 X 的真约数) 3 = 1 + 2 (1 & 2 都是 X 的真约数。而且它们是唯一的) 4 = 1 + 3 (1 & 3 都是 X 的真约数。而且它们是唯一的) 5 = 2 + 3 (2 & 3 都是 X 的真约数。而且它们是唯一的) 6 = 2 + 4 (2 & 4 都是 X 的真约数。而且它们是唯一的) 7 = 3 + 4 (3 & 4 都是 X 的真约数。而且它们是唯一的) 8 = 2 + 6 (2 & 6 都是 X 的真约数。而且它们是唯一的) 9 = 3 + 6 (3 & 6 都是 X 的真约数。而且它们是唯一的) 10 = 1 + 3 + 6 (1, 3, & 6 都是 X 的真约数。而且它们是唯一的) 11 = 2 + 3 + 6 (2, 3 & 6 都是 X 的真约数。而且它们是唯一的) 因此,我们发现 Y 中的所有数字都满足给定条件。所以,数字12是一个实际数。 ![]() 实际数 Java 程序观察以下检查 1 到 20 之间实际数的 Java 程序。 文件名:PracticalNumberExample.java 输出 The number 1 is the practical number. The number 2 is the practical number. The number 3 is not the practical number. The number 4 is the practical number. The number 5 is not the practical number. The number 6 is the practical number. The number 7 is not the practical number. The number 8 is the practical number. The number 9 is not the practical number. The number 10 is not the practical number. The number 11 is not the practical number. The number 12 is the practical number. The number 13 is not the practical number. The number 14 is not the practical number. The number 15 is not the practical number. The number 16 is the practical number. The number 17 is not the practical number. The number 18 is the practical number. The number 19 is not the practical number. The number 20 is the practical number. 解释:对于 1 到 20 之间的每个数字,通过 for 循环调用 isPracticalNo() 方法。对于每个数字,都会创建一个 vector 因子来存储其约数。现在,对于从 1 到给定数字 (num) 的每个数字,我们尝试使用动态规划找到子集。如果对于从 1 到给定数字 (num) 的每个数字都能找到子集,则给定数字 (num) 是完美数;否则不是。 注意:可以使用递归来查找子集,而不是动态规划。然而,与动态规划方法相比,递归方法将需要更多时间来生成子集。 |
java.nio.FloatBuffer 类具有 equals() 函数。要确定提供的缓冲区是否等于另一个对象,请使用 FloatBuffer 类。当且仅当两个 float 缓冲区等效时,它们的元素类型才相同。剩余元素的数量是...
阅读 3 分钟
Java 同步类 Exchanger 是最迷人的。通过创建同步点,它使得在两个线程之间交换元素变得更容易。两个线程之间的数据传输因此变得更加简单。它的工作原理是,它只...
阅读 3 分钟
在引入线程概念之前,我们无法并行运行多个任务。这是一个缺点,为了消除这个缺点,引入了线程概念。线程是一个非常轻量级的进程,或者我们可以说它是...的最小部分。
阅读 8 分钟
在 Java 中将 KN 表示为恰好 N 个数字的总和需要仔细考虑数学原理和编程技术。问题陈述:我们给定两个整数 N(指数整数)和 K(底数整数)。我们必须将 KN 表示为恰好 N 个数字的总和。打印...
阅读 6 分钟
在本节中,我们将探讨如何使用嵌套循环在 Java 中创建菱形模式。菱形是一种具有相等边的平行四边形,但其对角与矩形或正方形不同。菱形模式是一种优美的几何排列,可以可视化...
阅读 4 分钟
Eclipse 是 Java 和 Android 设计者中最杰出的 IDE 之一。如果 Eclipse 未按预期配置,则会出现许多问题。您需要单独尝试所有这些问题。一些用户在 Java 启动时遇到了问题……
5 分钟阅读
? File: RemoveChar .java public class RemoveChar { public static void main(String[] args) { String str = "India is my country"; System.out.println(charRemoveAt(str, 7)); } public static String charRemoveAt(String str, int p) { ...
阅读1分钟
在 Java 中,当我们创建类的对象时,它会在内存(堆)中占用一些空间。如果我们不删除这些对象,它们将保留在内存中并占用不必要的空间,这从编程的角度来看是不恰当的。为了解决...
阅读 6 分钟
? 链表是基本的数据结构,可以在计算机编程中高效地存储和操作数据。它们由节点组成,每个节点包含数据和指向列表中下一个节点的引用。在本文中,我们将探索 Java 中链表的各种操作,...
阅读 6 分钟
两层和三层数据库设计的结构和功能根本不同。在学习两层和三层架构之间的区别之前,让我们先了解两层架构。客户端和数据库服务器。在这种情况下,客户端直接连接到数据库,...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India