Java 来检查给定的数字是否是完全数
当给定数字(在去除给定数字后)的因子之和等于该数本身时,称为完美数。
在本文中,我们将创建用于检查给定数字是否是完美数的Java程序。对于给定的问题,我们将使用迭代方法,如for循环和while循环。让我们通过一些示例来理解一下-
示例1
给定的数字:496
其因子为:1,2,4,8,16,31,62,124和248(我们需要排除496)
因子之和为:1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496
因此,它是一个完美数
示例2
给定的数字:54
其因子为:1,2,3,6,9,18和27(我们需要排除54)
因子之和为:1 + 2 + 3 + 6 + 9 + 18 + 27 = 66
因此,它不是一个完美数
方法1:使用for循环
语法
for ( initial expression; conditional expression; increment/decrement expression )
{
// code to be executed
}
初始表达式: 循环开始时执行一次。
条件表达式: 只要条件为真,代码就会执行。
增量/减量表达式: 用来增加/减少循环变量。
步骤
- 步骤1: 声明和初始化一个整数变量’n1’,用于检查它是否是完美数,另一个整数变量’add’用于存储496的因子之和的结果。
-
步骤2: 使用一个循环,循环次数为495次,即’n1-1’,因为我们要排除给定的数。循环中的if块将检查495以内的数是否完全整除496,并且如果整除,则将该数加到’add’变量中。
-
步骤3: 最后的if-else块将检查因子的和是否等于给定的数。在496的情况下,if块为真,所以我们得到的结果是496是一个完美数。
示例
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
方法2:使用While循环
语法
while (conditional expression) {
// code will be executed till conditional expression is true
increment/decrement expression;
// to increment or decrement loop variable
}
示例
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循环。
方法3:循环到n/2
这种方法比我们之前讨论过的其他两种方法更加优化。在这种方法中,循环只会迭代到给定数字的一半,因为我们可以在该数字的一半之间找到该数字的所有因子(不包括数字本身)。
示例
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程序。这三种方法中,第三种方法是更优化和推荐的。