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

更新於: 2022 年 10 月 27 日

7K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告