如何在 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告