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数。