Java 程序:寻找完美数

原文:https://www.studytonight.com/java-programs/java-program-to-find-the-perfect-number

如果一个数的所有因子之和(不包括数本身)等于该数,则称该数为完全数。例如,考虑数字 6。6 的因子是 1,2,3 和 6。现在,除了数本身,它的所有因子之和是 1+2+3=6。

这里,由于原始数等于除了数本身以外的所有因素的总和,因此它是一个完全数。

在本教程中,我们将学习如何在 java 中找到完美数。但是在继续之前,如果你不熟悉 java 中循环的概念,那么一定要查看关于 Java 中循环的文章

输入:输入数字:34

输出: 34 不是一个完全数

Java 程序:寻找完全数

在这个程序中,我们将使用 for 循环检查数字是否完美。

算法

  1. 开始

  2. 创建 Scanner 类的实例。

  3. 声明一个变量。

  4. 要求用户初始化变量。

  5. 调用一个方法检查数字是否完美。

  6. 声明一个变量来存储除数之和。

  7. 将总和初始化为 1。

  8. 使用 for 循环查找输入数字的除数。

  9. 每次输入数字的除数遇到时更新总和。

  10. 如果输入数字的所有除数之和等于输入的数字,则将其打印为一个完全数。

  11. 如果输入数字的所有除数之和不等于输入的数字,则将其打印为非完全数。

  12. 显示结果。

  13. 停止

下面是寻找完美数的 Java 代码。

// Program to find the perfect number in Java 
import java.util.Scanner;
public class Main 
{  
   public static void main(String[] args) 
   {  
       //Take input from the user
       //Create instance of the Scanner class
       Scanner sc = new Scanner(System.in);  
       System.out.println("Enter the number: ");  
       int num = sc.nextInt();        
       if (checkPerfect(num)) 
        {  
               System.out.print(num+" is a perfect number ");  
        }
        else
        {
            System.out.println(num+" is not a perfect number "); 
        }

   }  
    static boolean checkPerfect(int num)
   {
    // To store sum of divisors
    int sum = 1;

    // Find all divisors and add them
    for (int i = 2; i * i <= num; i++)
    {
        if (num % i==0)
        {
            if(i * i != num)
                sum = sum + i + num / i;
            else
                sum = sum + i;
        }
    } 
        // If sum of divisors is equal to number
        // Then number is a perfect number
        if (sum == num && num != 1)
        return true;

       return false;
    } 
}

输入数字:28 28 是一个完全数

Java 程序:程序 2:寻找完全数

在这个程序中,我们将使用 while 循环检查数字是否完美。

算法

  1. 开始

  2. 创建 Scanner 类的实例。

  3. 声明一个变量。

  4. 要求用户初始化变量。

  5. 调用一个方法检查数字是否完美。

  6. 声明一个变量来存储除数和另一个循环变量。

  7. 将总和初始化为 0,并将循环变量初始化为 1。

  8. 使用 while 循环查找输入数字的除数。

  9. 每次输入数字的除数遇到时更新总和。

  10. 每次迭代后递增循环变量。

  11. 如果输入数字的所有除数之和等于输入的数字,则将其打印为一个完全数。

  12. 如果输入数字的所有除数之和不等于输入的数字,则将其打印为非完全数。

  13. 显示结果。

  14. 停止

下面是寻找完美数的 Java 代码。

// Program to find the perfect number in Java 
import java.util.Scanner;
public class Main 
{  
   public static void main(String[] args) 
   {  
       //Take input from the user
       //Create instance of the Scanner class
       Scanner sc = new Scanner(System.in);  
       System.out.println("Enter the number: ");  
       int num = sc.nextInt();  
       checkPerfect(num);    //Call a method to check perfect

   }  
   //Checks and Prints whether perfect or not
   static void checkPerfect(int num)
   {
    // To store sum of divisors
    int sum = 0,i=1;
    while(i<num)
    {
        if(num % i == 0)
        {
            sum = sum + i;
        }
        i++;
    }
    if(sum == num)
    {
        System.out.println("The entered number "+num+" is a Perfect number");
    }
    else
    {
        System.out.println("The entered number "+num+" is not a Perfect number");
    }     
  } 
}

输入数字:35 输入的数字 35 不是完全数

Java 程序:程序 3:寻找完全数

在这个程序中,我们将找到一个范围内的完全数。

算法

  1. 开始

  2. 创建 Scanner 类的实例。

  3. 声明范围。

  4. 要求用户初始化范围。

  5. 使用 for 循环迭代该范围内的元素。

  6. 调用一个方法检查数字是否完美。

  7. 声明一个变量来存储除数和另一个循环变量。

  8. 将总和初始化为 0,并将循环变量初始化为 1。

  9. 使用 while 循环查找输入数字的除数。

  10. 每次输入数字的除数遇到时更新总和。

  11. 每次迭代后递增循环变量。

  12. 如果输入的所有数的除数之和等于输入的数,则返回 true。

  13. 如果输入的所有数的除数之和不等于输入的数,则返回 false。

  14. 展示完美的元素。

  15. 停止

下面是寻找完美数的 Java 代码。

// Program to find the perfect number in Java 
import java.util.Scanner;
public class Main 
{  
   public static void main(String[] args) 
   {  
       //Take input from the user
       //Create instance of the Scanner class
       Scanner sc = new Scanner(System.in);  
       System.out.println("Enter the first number: ");  
       int num1 = sc.nextInt(); 
       System.out.println("Enter the second number: ");  
       int num2 = sc.nextInt(); 
       System.out.println("Perfect numbers within the given range are: ");  
       for(int i=num1;i<=num2;i++)
       {      
           if(checkPerfect(i))
           System.out.print(i+" ");
       }
   }       
   //Checks and Prints whether perfect or not
   static boolean checkPerfect(int num)
   {
    // To store sum of divisors
    int sum = 0,i=1;
    while(i<num)
    {
        if(num % i == 0)
        {
            sum = sum + i;
        }
        i++;
    }
    if(sum == num)
       return true;

    return false;    
  } 
}

输入第一个数字:2 输入第二个数字:50 给定范围内的完全数为: 6 28