如何在 Java 中检查一个数是否为克里希纳穆蒂数?
克里希纳穆蒂数可以定义为一个数,当所有数字的阶乘之和等于该数本身。
克里希纳穆蒂数也称为强数、特殊数和彼得森数。
举几个例子:
示例 1
输入数字为 1
让我们使用克里希纳穆蒂数的逻辑来检查它:
1 = 1! = 1 which is equal to the original number.
因此,1 是一个克里希纳穆蒂数。
示例 2
输入数字为 145
让我们使用克里希纳穆蒂数的逻辑来检查它:
145 = 1! + 4! + 5! = 1 + 24 + 120 = 145 which is equal to the original number.
因此,145 是一个克里希纳穆蒂数。
示例 3
输入数字为 55
让我们使用克里希纳穆蒂数的逻辑来检查它:
55 = 5! + 5! = 120 + 120 = 240 which is not equal to the original number.
因此,55 不是一个克里希纳穆蒂数。
其他一些克里希纳穆蒂数的例子包括 2、40585 等。
算法
步骤 1 - 获取一个整数,可以通过初始化或用户输入获得。
步骤 2 - 保留原始数字的副本,以便与新数字进行比较。
步骤 3 - 找到输入数字中每个数字的阶乘,并跟踪这些数字阶乘的总和。
步骤 4 - 最后,将数字阶乘的总和与原始输入数字的副本进行比较。如果两者相等,则它是一个克里希纳穆蒂数。否则,输入数字不是克里希纳穆蒂数。
多种方法
我们提供了不同方法的解决方案。
使用静态输入值
使用用户定义的方法
让我们逐一查看程序及其输出。
方法 1:使用用户输入值
在这种方法中,将在程序中初始化一个整数值,然后使用算法检查该数是否为克里希纳穆蒂数。
示例
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:使用用户定义的方法
在这种方法中,将提示用户输入一个整数值,然后我们将调用一个用户定义的方法,并将此输入数字作为参数传递。
在方法内部,我们将使用算法检查该数是否为克里希纳穆蒂数。
示例
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 中使用不同的方法来检查一个数是否为克里希纳穆蒂数。
广告