如何在 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 中使用不同的方法來檢查一個數是否為克里希納穆蒂數。
廣告