如何在Java中检查一个数是否为强数?
如果一个数的每位数字的阶乘之和等于该数本身,则称该数为强数。
更清晰地解释,我们需要找到给定数字每位数字的阶乘。然后计算这些阶乘的和。最后,我们将和与输入数字进行比较,如果它们相等,则给定数字是强数,否则不是。
在本文中,我们将学习如何使用Java编程语言来检查一个数是否为强数。
一些示例
示例1
输入数字是145。
让我们使用强数的逻辑来检查它。
The factorial of 1, 4 and 5 is 1, 24 and 120. The sum of these factorials = 1 + 24 + 120 = 145
正如我们在这里看到的,阶乘的和与输入值相同。
因此,145是一个强数。
示例2
输入数字是534。
让我们使用强数的逻辑来检查它。
The factorial of 5, 3 and 4 is 120, 6 and 24. The sum of these factorials = 120 + 6 + 24 = 150
正如我们在这里看到的,阶乘的和与输入值不同。
因此,534不是一个强数。
算法
算法1
步骤1 − 获取一个整数,可以通过初始化或用户输入获得。
步骤2 − 使用模运算符 (%) 依次提取每一位数字,同时使用while循环找到每位数字的阶乘,并跟踪阶乘的和。
步骤3 − 最后将和与输入数字进行比较
步骤4 − 如果和与输入值相等,则打印结果,表明给定数字是强数;否则,该数字不是强数。
算法2
步骤1 − 获取一个整数,可以通过初始化或用户输入获得。
步骤2 − 然后创建一个数组,并保存相应索引位置的阶乘。(在索引 0 和索引 1 处保存值 1),索引 2 将保存 2 的阶乘,索引 3 将保存 3 的阶乘……最后一个索引 9 将保存 9 的阶乘。
步骤3 − 使用模运算符 (%) 依次提取每一位数字,并根据数字从数组中找到其阶乘,并跟踪阶乘的和。
步骤4 − 最后将和与输入数字进行比较
步骤5 − 如果和与输入值相等,则打印结果,表明给定数字是强数;否则,该数字不是强数。
多种方法
我们提供了三种不同的方法。
使用静态输入值
使用用户自定义方法和数组
让我们依次查看程序及其输出。
方法1:使用静态输入值
在这种方法中,在程序中将数字作为静态输入,然后使用算法 1,我们可以检查该数字是否为强数。
示例
import java.util.*; public class Main { //main method public static void main(String[] args) { //declare an int variable and initialize a number as value int inputNumber = 145; //declare a variable for iteration int i; //declare variables for factorial value and the extracted digits int factorial,digit; //declare a variable to store the sum value int sum = 0; //transfer the input value to a temporary variable int temp = inputNumber; //start looping for calculating the result while(temp != 0) { i = 1; factorial = 1; //extracting the digit digit = temp % 10; //get the factorial of the digit while(i <= digit) { factorial = factorial * i; i++; } //store the sum value sum = sum + factorial; //removing the digit one by one temp = temp / 10; } //check condition if(sum == inputNumber) //if sum value is equal to input number System.out.println(inputNumber + " is a strong number\n"); else //if sum value is not equal to input number System.out.println(inputNumber + " is not a strong number\n"); } }
输出
145 is a strong number
方法2:使用用户自定义方法和数组
在这种方法中,将静态数字作为输入,并将此数字作为参数传递给用户自定义方法,然后在方法内部使用算法 2,我们可以检查该数字是否为强数。
示例
public class Main { //main method public static void main (String[] args) { //declare an int variable and initialize it with a number int inp = 2; //in if condition call the user defined function //by passing the input value to the method as parameter if(checkStrong(inp)) { //if true then it is a strong number System.out.println(inp + " is a strong numbrer."); } else { //if false then it is not a strong number System.out.println(inp + " is not a strong number."); } } //user defined method to check strong number static boolean checkStrong(int inputNumber) { //declare an array to store all the factorial value from 0 to 9 int factorial[] = new int[10]; //store 1 in 0th and 1st index of factorial //this is just to store each digits factorials at its respective index position //like the 1st index will hold factorial of 1, 2nd index for factorial of 2, 3rd index for factorial of 3... factorial[0] = factorial[1] = 1; //initiating the loop to find the factorials for (int i = 2; i<10; ++i) factorial[i] = factorial[i-1] * i; //declare an int variable 'sum' to store the sum value int sum = 0; //declare a temporary variable to store the input number int temp = inputNumber; //initiate the iteration for finding the sum of the factorials of the digits while (temp>0) { //get the factorial of the digit from the array sum += factorial[temp%10]; //removing the digit after calculation temp /= 10; } //if the sum value is equal to input number return true return (sum == inputNumber); } }
输出
2 is a strong number.
在本文中,我们探讨了如何使用不同的方法在Java中检查一个数是否为强数。