Java程序检查给定数字是否为完美数
当给定数字的因子之和(去除给定数字本身)等于该数字本身时,称为完美数。这些约数的和称为真约数和。因此,如果一个数与其真约数和相等,则该数是完美数。值得注意的是,所有已知的完美数都是偶数。
问题陈述
在这篇文章中,我们将创建Java程序来检查给定数字是否为完美数。对于给定的问题,我们将使用迭代方法,例如for循环和while循环。让我们通过一些例子来理解:
输入1
Given number: 496
输出1
Its factors are: 1, 2, 4, 8, 16, 31, 62, 124, and 248 ( we have to exclude 496 )
Sum of the factors are: 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496
Therefore, it is a perfect number
输入2
Given number: 54
输出2
Its factors are: 1, 2, 3, 6, 9, 18, and 27 ( we have to exclude 54 )
Sum of the factors are: 1 + 2 + 3 + 6 + 9 + 18 + 27 = 66
Therefore, it is not a perfect number
检查完美数的方法
以下是我们可以用来检查给定数字是否为完美数的一些方法:
使用For循环检查完美数
for循环是入口控制循环,其中执行给定条件。
语法
for ( initial expression; conditional expression; increment/decrement expression )
{
// code to be executed
}
初始表达式 - 循环开始时执行一次。
条件表达式 - 直到条件表达式为真时才会执行代码。
增量/减量表达式 - 用于增量/减量循环变量。
使用for循环检查给定数字是否为完美数的步骤
以下是使用for循环检查给定数字是否为完美数的步骤:
- 从java.util包导入类。
- 声明并初始化一个整数变量n1表示要检查的数字,另一个整数变量add用于存储其因子的和。
- 使用一个for循环,从1运行到n1 - 1。
- 在循环内,使用if语句检查n1是否可以被当前循环变量整除。
- 如果可以整除,则将循环变量添加到add中。
- 循环结束后,使用if-else块检查add是否等于n1。
示例
import java.util.*;
public class Perfect {
public static void main(String[] args) {
int n1 = 496;
int add = 0;
for(int i = 1; i < n1; i++) {
if(n1 % i==0) {
add = add + i;
// adding and incrementing
}
}
boolean isPerfect = (add == n1);
if(isPerfect) {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
} else {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
}
}
}
输出
is 496 a perfect number?: true
使用While循环检查完美数
while循环是入口控制循环,在执行循环体之前检查条件。
语法
while (conditional expression) {
// code will be executed till conditional expression is true
increment/decrement expression;
// to increment or decrement loop variable
}
使用while循环检查给定数字是否为完美数的步骤
以下是使用while循环检查给定数字是否为完美数的步骤:
- 从java.util包导入类。
- 声明并初始化一个整数变量n1表示要检查的数字,另一个整数变量add用于存储其因子的和。
- 声明一个循环变量i并将其设置为1。
- 使用一个while循环,只要i小于n1就运行。
- 在循环内,使用if语句检查n1是否可以被i整除。如果可以整除,则将i添加到add中。
- 将i递增1。循环结束后,使用if-else块检查add是否等于n1。
示例
import java.util.*;
public class Main {
public static void main(String[] args) {
int n1 = 28;
int add = 0;
int i = 1;
// loop variable
while(i < n1) {
if(n1 % i == 0) {
add = add + i;
}
i++;
// incrementing
}
boolean isPerfect = (add == n1);
if(isPerfect) {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
} else {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
}
}
}
输出
is 28 a perfect number?: true
在上面的程序中,我们遵循相同的逻辑,但使用了不同的变量n1值,并且使用了while循环而不是for循环。
循环到n/2检查完美数
这种方法比我们在本文前面讨论的另外两种方法更优化。在这种方法中,循环将仅迭代到给定数字的一半,因为我们可以在该数字的一半之间找到该数字的所有因子(不包括数字本身)。
迭代到n/2检查给定数字是否为完美数的步骤
以下是迭代到n/2检查给定数字是否为完美数的步骤:
- 声明并初始化一个整数变量n1表示要检查的数字,另一个整数变量add用于存储其因子的和。
- 声明一个循环变量i并将其设置为1。
- 使用while循环,只要i小于或等于n1 / 2就运行。
- 在循环内,使用if语句检查n1是否可以被i整除。如果可以整除,则将i添加到add中。将i递增1。
- 循环结束后,使用if-else块检查add是否等于n1。
示例
import java.util.*;
public class Perfect {
public static void main(String[] args) {
int n1=6;
int add = 0;
int i=1;
while(i <= n1/2) {
// loop will run till 3 ( 6/2 = 3)
if(n1 % i==0) {
add = add + i;
}
i++;
}
boolean isPerfect = (add == n1);
if(isPerfect) {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
} else {
System.out.println("is " + n1 + " a perfect number?: " + isPerfect);
}
}
}
输出
is 6 a perfect number?: true
结论
在这篇文章中,我们看到了三种Java程序方法来检查给定数字是否为完美数。我们了解了如何使用迭代方法来编写Java程序。方法3更优化,我们推荐使用这种方法。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP