欢迎访问宙启技术站
智能推送

使用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函数,来打印不同位数的水仙花数。