使用Java函数实现水仙花数的计算?
发布时间:2023-05-30 07:10:38
水仙花数,也称为阿姆斯特朗数,是指一个n位数,其各位数字的n次方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面,我们使用Java函数实现水仙花数的计算。首先,我们需要定义一个函数来检查一个给定的数字是否为水仙花数:
public static boolean isArmstrong(int n) {
int sum = 0;
int temp = n;
int len = String.valueOf(n).length();
while (temp > 0) {
int digit = temp % 10;
sum += Math.pow(digit, len);
temp /= 10;
}
return sum == n;
}
这个函数接受一个整数n作为参数,并返回一个布尔值,表示该数字是否为水仙花数。函数首先计算给定数的位数,并使用while循环遍历所有位数。在每一位上,我们计算该数字的位数次方,并将其加到总和中。最后,如果总和等于给定数,则返回true,否则返回false。
现在,我们可以编写另一个函数,来打印所有的n位水仙花数:
public static void printArmstrongNumbers(int n) {
int start = (int) Math.pow(10, n - 1);
int end = (int) Math.pow(10, n) - 1;
for (int i = start; i <= end; i++) {
if (isArmstrong(i)) {
System.out.println(i);
}
}
}
这个函数接受一个整数n作为参数,并打印所有n位水仙花数。我们首先计算n位数的范围,并使用for循环遍历所有这些数字。对于每个数字,我们使用isArmstrong函数来检查它是否为水仙花数。如果是的话,我们打印它。
最后,我们可以编写一个main函数来测试这些函数:
public static void main(String[] args) {
printArmstrongNumbers(3);
}
这个main函数调用printArmstrongNumbers函数,并传入3作为参数。这将打印所有3位水仙花数。
完整的代码如下:
public class ArmstrongNumbers {
public static boolean isArmstrong(int n) {
int sum = 0;
int temp = n;
int len = String.valueOf(n).length();
while (temp > 0) {
int digit = temp % 10;
sum += Math.pow(digit, len);
temp /= 10;
}
return sum == n;
}
public static void printArmstrongNumbers(int n) {
int start = (int) Math.pow(10, n - 1);
int end = (int) Math.pow(10, n) - 1;
for (int i = start; i <= end; i++) {
if (isArmstrong(i)) {
System.out.println(i);
}
}
}
public static void main(String[] args) {
printArmstrongNumbers(3);
}
}
在运行这个程序时,你将得到以下输出:
153
370
371
407
这些数字都是3位数的水仙花数。你可以尝试用不同的参数调用printArmstrongNumbers函数,来打印不同位数的水仙花数。
