如何在Java中检查一个数是否为水仙花数?
如果一个数的每个位数的n次幂之和等于该数本身,则称该数为水仙花数,其中n是该数的位数。
更清晰地说,如果一个数有n位,我们首先计算每个位数的n次幂。然后将这些值相加,如果计算出的值与原数相同,则该原数被称为水仙花数。
一些水仙花数的例子是:153, 8208, 4210818, ... 等。
在这篇文章中,我们将学习如何使用Java编程语言来检查一个数是否为水仙花数。
举几个例子
实例1
输入数字是153。
让我们用水仙花数的逻辑来检查它。
153的位数是3。
计算幂值并相加 = (1^3) + (5^3) + (3^3) = 1 + 125 + 27 = 153
我们在这里注意到计算出的数字和原数字相同。
因此,153是一个水仙花数。
实例2
输入数字是8208。
让我们用水仙花数的逻辑来检查它。
8208的位数是4。
计算幂值并相加 = (8^4) + (2^4) + (0^4) + (8^4) = 4096 + 16 + 0 + 4096 = 8208
我们在这里注意到计算出的数字和原数字相同。
因此,8208是一个水仙花数。
实例3
输入数字是250。
让我们用水仙花数的逻辑来检查它。
250的位数是3。
计算幂值并相加 = (2^3) + (5^3) + (0^3) = 8 + 125 + 0 = 133。
我们在这里注意到计算出的数字和原数字不同。
因此,250不是一个水仙花数。
算法
步骤1 - 通过静态输入方法获取输入数字。
步骤2 - 计算原数字的位数。
步骤3 - 初始化一个循环来提取数字并计算它的幂值。在循环中,将这些计算出的幂值相加并存储到一个变量中。
步骤4 - 将计算出的值与原数字进行比较。
步骤5 - 如果两者相同,则输入数字被称为水仙花数,否则不是。
语法
在Java中,我们可以使用内置的java.lang.Math.pow()方法来获取任何数的另一个数的幂。
以下是使用该方法获取2的幂的语法:
double power = Math.pow (inputValue,2)
多种方法
我们提供了多种方法的解决方案。
使用静态输入值和用户自定义方法
使用用户输入和用户自定义方法
让我们逐一查看程序及其输出。
方法1:使用静态输入值
在这种方法中,我们声明一个变量并用一个数字初始化它。通过将此数字作为参数调用用户自定义方法。然后,在方法内部,我们可以使用算法来检查该数字是否为水仙花数。
示例
import java.util.*; import static java.lang.Math.*; public class Main { public static void main(String args[]) { //declare a variable and initialize it with a number int inputNumber = 8208; //call the function inside the if condition which checks narcissistic if (checkNarcissistic(inputNumber)) System.out.println(inputNumber + " is a narcissistic number."); else System.out.println(inputNumber + " is not a narcissistic number."); } //user-defined method to count the digits static int countDig(int num) { if (num == 0) return 0; return 1 + countDig(num / 10); } //user-defined method to check narcissistic number static boolean checkNarcissistic(int num) { //declare a variable and store the counts of digits int p = countDig(num); //declare a variable and temporary store the input number int temp = num; //Declare a variable which store the sum value and initiate it with 0 int sum = 0; //execute the loop while(temp > 0) { //extarct digits and find power of it //continuously add it to sum value sum+= pow(temp % 10, p); //removes the digit which is already calculated temp = temp / 10; } //return true if original number is equal to the sum value return (num == sum); } }
输出
8208 is a narcissistic number.
方法2:使用静态输入值
在这种方法中,我们声明一个变量,并通过用户输入为其赋值。通过将此数字作为参数调用用户自定义方法。然后,在方法内部,我们可以使用算法来检查该数字是否为水仙花数。
示例
import java.util.*; import static java.lang.Math.*; public class Main { public static void main(String args[]) { //create object of Scanner class Scanner sc = new Scanner(System.in); //ask the user to enter a number System.out.print("Enter the number: "); //declare a variable and store the input value int inputNumber = sc.nextInt(); //call the function inside the if condition which checks narcissistic if (checkNarcissistic(inputNumber)) System.out.println(inputNumber + " is a narcissistic number."); else System.out.println(inputNumber + " is not a narcissistic number."); } //user-defined method to count the digits static int countDig(int num) { if (num == 0) return 0; return 1 + countDig(num / 10); } //user-defined method to check narcissistic number static boolean checkNarcissistic(int num) { //declare a variable and store the counts of digits int p = countDig(num); //declare a variable and temporary store the input number int temp = num; //Declare a variable which store the sum value and initiate it with 0 int sum = 0; //execute the loop while(temp > 0) { //extarct digits and find power of it //continuously add it to sum value sum+= pow(temp % 10, p); //removes the digit which is already calculated temp = temp / 10; } //return true if original number is equal to the sum value return (num == sum); } }
输出
Enter the number: 8208 8208 is a narcissistic number.
在这篇文章中,我们探讨了如何使用不同的方法在Java中检查一个数是否为水仙花数。