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
}

初始表达式: 循环开始时执行一次。

条件表达式: 只要条件为真,代码就会执行。

增量/减量表达式: 用来增加/减少循环变量。

步骤

  • 步骤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程序。这三种方法中,第三种方法是更优化和推荐的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程