Java 程序 检查给定数字是否为完美数

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,因为它更加优化。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Java 示例