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
}
initial expression − 循环开始运行时执行一次。
conditional expression − 只有在条件表达式为true时才会执行代码。
increment/decrement expression − 用于增加/减少循环变量。
算法
- 步骤1 − 声明并初始化一个整数变量‘n1’,以检查它是否是完美数,另一个整数变量‘add’用于存储因子的总和496。
-
步骤2 − 使用for循环,该循环将运行495次,即‘n1-1’次,因为我们必须排除给定数字。 for循环内的if块将检查哪个数字在495以内将数字496完全分解,如果它被分解,则将‘add’变量增加该数字。
-
步骤3 − 最后的if-else块将检查因子之和是否等于给定数字。 对于496,在if块为true的情况下,因此我们将得到结果为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;
// 添加并递增
}
}
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;
// 循环变量
while(i < n1) {
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 28 a perfect number?: true
在上面的程序中,我们遵循了相同的逻辑,但使用不同的变量‘n1’值,而不是for循环,我们使用了while循环。
方法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) {
// 循环将运行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,因为它更加优化。