Java语言怎么判断一个数字是不是水仙花数

Java语言怎么判断一个数字是不是水仙花数?怎么判断100-999里面有多少个水仙花数?为什么水仙花数的个数那么少?

水仙花数是指一个 n 位数(n ≥ 3),它的每个位上的数字的 n 次幂之和等于它本身。
实现方式

public class Main {
    public static boolean isNarcissisticNumber(int num) {
        String strNum = String.valueOf(num);
        int numDigits = strNum.length();
        int temp = num;
        int sum = 0;

        while (temp > 0) {
            int digit = temp % 10;
            sum += Math.pow(digit, numDigits);
            temp /= 10;
        }

        return sum == num;
    }

    public static void main(String[] args) {
        int count = 0;

        for (int i = 100; i <= 999; i++) {
            if (isNarcissisticNumber(i)) {
                System.out.println(i + " 是水仙花数");
                count++;
            }
        }

        System.out.println("100-999之间共有 " + count + " 个水仙花数");
    }
}

【以下回答由 GPT 生成】

如何用Java语言判断一个数字是否为水仙花数?

水仙花数也被称为阿姆斯特朗数,是指一个三位数,其各位数字的立方和等于该数本身。

首先,我们可以用以下步骤来判断一个数字是否为水仙花数:

  1. 将数字拆解成各个位数。

  2. 对每个位数进行立方操作,并将结果相加。

  3. 判断结果是否与原始数字相等。

  4. 如果相等,则说明该数字是水仙花数;否则,不是水仙花数。

下面是一个Java代码示例:

public class Main {
    public static void main(String[] args) {
        int number = 153; // 要判断的数字

        int sum = 0;
        int temp = number;

        while (temp != 0) {
            int digit = temp % 10;
            sum += Math.pow(digit, 3);
            temp /= 10;
        }

        if (sum == number) {
            System.out.println(number + " 是一个水仙花数");
        } else {
            System.out.println(number + " 不是一个水仙花数");
        }
    }
}

在100到999之间有多少个水仙花数?

我们可以使用一个循环来判断100到999之间的每个数字是否为水仙花数,并计数符合条件的数字的数量。

下面是一个Java代码示例:

public class Main {
    public static void main(String[] args) {
        int count = 0;

        for (int number = 100; number <= 999; number++) {
            int sum = 0;
            int temp = number;

            while (temp != 0) {
                int digit = temp % 10;
                sum += Math.pow(digit, 3);
                temp /= 10;
            }

            if (sum == number) {
                count++;
            }
        }

        System.out.println("100到999之间有 " + count + " 个水仙花数");
    }
}

为什么水仙花数的数量那么少呢?

水仙花数的数量之所以比较少,是因为满足水仙花数条件的数必须同时满足以下几个条件:

  • 数字必须是三位数;
  • 数字的各个位数的立方和等于该数字本身。

这样的条件相对来说比较特殊,所以符合条件的数字并不多。但在其他数值范围内,也存在满足类似条件的数,例如四位数中的四叶玫瑰数等。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

public class Main {
    public static void main(String[] args) {
        for (int i = 100; i <= 999; i++) {
            if (isNarcissistic(i)) {
                System.out.println(i);
            }
        }
    }
    public static boolean isNarcissistic(int num) {
        int original = num;
        int result = 0;
        int n = String.valueOf(num).length();
        while (num != 0) {
            int remainder = num % 10;
            result += Math.pow(remainder, n);
            num /= 10;
        }
        return original == result;
    }
}