Java 如何检查一个数字是否为Krishnamurthy数字

Java 如何检查一个数字是否为Krishnamurthy数字

Krishnamurthy数字被定义为一个数字,当所有位数的阶乘之和等于原来的数字时。

这个Krishnamurthy数字也被称为强数、特殊数和彼得森数。

举例说明

示例1

输入数字为1

通过使用Krishnamurthy数字的逻辑来检查它 –

1 = 1! = 1 which is equal to the original number.

因此,1是一个Krishnamurthy数。

示例2

输入的数字是145

让我们使用Krishnamurthy数的逻辑来检查它-

145 = 1!  + 4! + 5! = 1 + 24 + 120 = 145 which is equal to the original number.

因此,145是一个Krishnamurthy数。

示例3

输入数字是55

让我们使用Krishnamurthy数的逻辑来检查它-

55 = 5!  +  5! = 120 + 120 = 240 which is not equal to the original number.

因此,55不是Krishnamurthy数。

其他一些Krishnamurthy数的示例包括2,40585等

步骤

  • 步骤1 − 通过初始化或用户输入获得一个整数。

  • 步骤2 − 复制原始数字以便与新数字进行比较。

  • 步骤3 −找到输入数字的每个数字的阶乘,并记录阶乘的和。

  • 步骤4 − 最后,将阶乘和与原始输入数字的副本进行比较。如果两者相等,则为Krishnamurthy数。否则,输入数字不是Krishnamurthy数。

多种方法

我们提供了不同的解决方法。

  • 通过使用静态输入值

  • 通过使用用户定义的方法

让我们逐个查看程序及其输出。

方法1:通过使用用户输入值

在此方法中,程序将初始化一个整数值,然后通过使用算法,我们可以检查一个数是否为Krishnamurthy数。

示例

import java.util.*;

public class Main {
   //main method
   public static void main(String[] args) {
      //initialized a number
      int originalNumber = 145;
      //printing the given number
      System.out.println("Given number: "+originalNumber);

      //keep a copy of original number
      int copyOfOriginalNumber = originalNumber;
      //initializing sum value as 0 
      int sum = 0;
      //continue the while loop till the original number becomes 0
      while (originalNumber != 0) {
         //find the digit of the number
         int digit = originalNumber%10;
         //declare an integer variable say fact & initialize as 1
         int fact = 1; 
         //find the factorial by using for loop
         for (int i= 1; i<= digit; i++){
            fact = fact * i;
         }
         //add the factorial with sum
         sum = sum + fact;
         //get the updated number
         originalNumber = originalNumber / 10;
      }
      //If sum of factorials and original input number 
      //are equal then it is a Krishnamurthy number
      if (sum == copyOfOriginalNumber)
         System.out.println(copyOfOriginalNumber + " is a Krishnamurthy number");
      //print it is not a Krishnamurthy number
      else
         System.out.println(copyOfOriginalNumber + " is not a Krishnamurthy number");
   }
}

输出

Given number: 145
145 is a Krishnamurthy number

方法2:使用用户定义的方法

在这种方法中,用户将被要求输入一个整数值,然后我们将通过将这个输入的数字作为参数调用一个用户定义的方法。

在方法内部,我们将使用算法来检查一个数字是否是Krishnamurthy数。

示例

import java.util.*;

public class Main {
   //main method
   public static void main(String[] args){
      //initialized a number
      int originalNumber = 40585;
      //printing the given number
      System.out.println("Given number: "+originalNumber);
      //keep a copy of original number
      int copyOfOriginalNumber = originalNumber;
      //calling the method to check Krishnamurthy number
      if (checkKrishnamurthy(originalNumber)) 
         System.out.println(copyOfOriginalNumber + " is a Krishnamurthy number"); 
      else
         System.out.println(copyOfOriginalNumber + " is not a Krishnamurthy number"); 
   }

   //user defined method 
   public static boolean checkKrishnamurthy(int originalNumber){
      //keep a copy of original number
      int copyOfNumber = originalNumber;

      //initializing sum value as 0 
      int sum = 0;
      //continue the while loop till the original number becomes 0
      while(originalNumber>0){
         //find the digit 
         int digit=originalNumber%10;
         //find factorial by calling the user defined method findFactorial() 
         //And add it to sum
         sum=sum+findFactorial(digit);
         originalNumber=originalNumber/10;
      }
      //If sum of factorials and original input number 
      //are equal then return true
      if (sum == copyOfNumber)
         return true;
         //else return false
      else
         return false;
   } 
   //find the factorial of an integer
   public static int findFactorial(int num){
      //declare an integer variable say fact & initialize as 1
      int factorial=1;
      //continue loop till number reaches 1
      while(num>=1){
         //multiply number with factorial
         factorial=factorial*num;
         //decrement the number
         num--;
      }
      //return the factorial
      return factorial;
   }
}

输出

Given number: 40585
40585 is a Krishnamurthy number

在本文中,我们通过使用不同的方法来探索如何在Java中检查一个数字是否是Krishnamurthy数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程