使用Java打印出所有的水仙花数的解决方法

 更新时间:2026年01月08日 08:43:42   作者:牛肉胡辣汤  
水仙花数也被称为超完全数字不变数、自恋数、自幂数,是指一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身,本文将通过 Java 语言来实现一个简单的程序,用于找出并打印所有三位数中的水仙花数,需要的朋友可以参考下

前言

水仙花数(Narcissistic number)也被称为超完全数字不变数、自恋数、自幂数,是指一个 n 位数 (n≥3),它的每个位上的数字的 n 次幂之和等于它本身。对于三位数而言,如果一个三位数的各位数字的立方和等于这个数本身,那么这个数就是水仙花数。

例如,153 是一个水仙花数,因为 \(1^3 + 5^3 + 3^3 = 153\)。

本文将通过 Java 语言来实现一个简单的程序,用于找出并打印所有三位数中的水仙花数。

实现思路

  1. 确定范围:由于水仙花数是三位数,因此我们的查找范围是 100 到 999。
  2. 分解数字:对于每一个三位数,我们需要将其分解为百位、十位和个位。
  3. 计算立方和:计算这三个位置上数字的立方和。
  4. 比较结果:如果计算出的立方和等于原数,则该数为水仙花数。
  5. 输出结果:将找到的所有水仙花数打印出来。

Java代码实现

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍历100到999之间的所有数字
        for (int num = 100; num <= 999; num++) {
            if (isNarcissistic(num)) {
                System.out.println(num);
            }
        }
    }
 
    /**
     * 判断一个数是否为水仙花数
     * @param num 待判断的数
     * @return 如果是水仙花数返回true,否则返回false
     */
    private static boolean isNarcissistic(int num) {
        int originalNum = num;
        int sum = 0;
 
        // 分解数字并计算立方和
        while (num > 0) {
            int digit = num % 10;
            sum += Math.pow(digit, 3);
            num /= 10;
        }
 
        // 判断立方和是否等于原数
        return sum == originalNum;
    }
}

运行结果

运行上述代码后,程序将输出所有的三位数水仙花数:

153
370
371
407

下面是一个用Java编写的示例代码,用于找出并打印所有的水仙花数(即三位数中,其各个位上的数字立方和等于该数本身的数)。

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍历所有三位数,从100到999
        for (int number = 100; number <= 999; number++) {
            if (isNarcissistic(number)) {
                System.out.println(number);
            }
        }
    }
 
    /**
     * 判断一个数是否是水仙花数
     * @param number 要判断的数
     * @return 如果是水仙花数返回true,否则返回false
     */
    public static boolean isNarcissistic(int number) {
        int originalNumber = number;
        int sum = 0;
 
        // 提取每一位数字并计算立方和
        while (number > 0) {
            int digit = number % 10;
            sum += Math.pow(digit, 3);
            number /= 10;
        }
 
        // 判断立方和是否等于原数
        return sum == originalNumber;
    }
}

代码解释:

  1. 主方法 main​:
  • 使用一个 ​​for​​ 循环遍历从100到999的所有三位数。
  • 对于每个数,调用 ​​isNarcissistic​​ 方法判断它是否是水仙花数。
  • 如果是水仙花数,则打印该数。
  1. 辅助方法 isNarcissistic​:
  • 接受一个整数 ​​number​​ 作为参数。
  • 保存原始数 ​​originalNumber​​,以便后续比较。
  • 使用 ​​while​​ 循环提取每一位数字,并计算其立方和。
  • 最后,判断立方和是否等于原始数,如果是则返回 ​​true​​,否则返回 ​​false​​。

运行结果:

运行上述代码后,输出将是所有的水仙花数:

153
370
371
407

这些数都是三位数,并且它们各自的各位数字的立方和等于该数本身。希望这个示例对你有帮助!如果有任何问题或需要进一步的解释,请随时告诉我。当然可以!下面是一个详细的Java程序,用于找出并打印所有的水仙花数。

什么是水仙花数?

水仙花数(Narcissistic number)是指一个三位数,其各位数字的立方和等于该数本身。例如,153 是一个水仙花数,因为:153 = 1^3 + 5^3 + 3^3

Java代码实现

public class NarcissisticNumber {
    public static void main(String[] args) {
        // 遍历所有三位数,从100到999
        for (int num = 100; num <= 999; num++) {
            if (isNarcissistic(num)) {
                System.out.println(num);
            }
        }
    }
 
    // 判断一个数是否是水仙花数
    public static boolean isNarcissistic(int num) {
        int originalNum = num;
        int sum = 0;
 
        // 提取每一位数字并计算立方和
        while (num > 0) {
            int digit = num % 10; // 取出个位数
            sum += Math.pow(digit, 3); // 计算立方并累加
            num /= 10; // 去掉个位数
        }
 
        // 判断立方和是否等于原数
        return sum == originalNum;
    }
}

代码解释

  1. 主方法 main​:
  • 使用一个 ​​for​​ 循环遍历所有三位数,从100到999。
  • 对于每一个数,调用 ​​isNarcissistic​​ 方法判断它是否是水仙花数。
  • 如果是水仙花数,则打印该数。
  1. 辅助方法 isNarcissistic​:
  • 接受一个整数 ​​num​​ 作为参数。
  • 将原数保存在 ​​originalNum​​ 中,以便后续比较。
  • 初始化 ​​sum​​ 为0,用于存储各位数字的立方和。
  • 使用 ​​while​​ 循环提取每一位数字:
  • ​digit = num % 10​​:取出当前数的个位数。
  • ​sum += Math.pow(digit, 3)​​:计算该位数字的立方并累加到 ​​sum​​。
  • ​num /= 10​​:去掉当前数的个位数。
  • 最后,判断 ​​sum​​ 是否等于 ​​originalNum​​,如果相等则返回 ​​true​​,否则返回 ​​false​​。

运行结果

运行上述程序,输出将是所有三位数中的水仙花数:

153
370
371
407

这些数都是满足条件的水仙花数。希望这个解释对你有帮助!如果有任何问题或需要进一步的说明,请随时告诉我。

以上就是使用Java打印出所有的水仙花数的解决方法的详细内容,更多关于Java打印水仙花数的资料请关注脚本之家其它相关文章!

相关文章

  • Java抽象的本质解析

    Java抽象的本质解析

    对于面向对象编程来说,抽象是它的一大特征之一,在 Java 中可以通过两种形式来体现OOP的抽象:接口和抽象类,下面这篇文章主要给大家介绍了关于Java基础抽象的相关资料,需要的朋友可以参考下
    2022-03-03
  • spring启动后保证创建的对象不被垃圾回收器回收

    spring启动后保证创建的对象不被垃圾回收器回收

    最近看到一个问题是,spring在启动后如何保证创建的对象不被垃圾回收器回收?。所以本文结合jvm的垃圾回收机制和spring中的源代码做出自己的一点猜测。有需要的朋友们可以参考借鉴。
    2016-09-09
  • 彻底理解Java 中的ThreadLocal

    彻底理解Java 中的ThreadLocal

    这篇文章主要介绍了彻底理解Java 中的ThreadLocal的相关资料,需要的朋友可以参考下
    2017-07-07
  • Spring Boot集成Java DSL的实现代码

    Spring Boot集成Java DSL的实现代码

    这篇文章主要介绍了Spring Boot集成Java DSL的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • jenkins按模块进行构建遇到的问题及解决方案

    jenkins按模块进行构建遇到的问题及解决方案

    这篇文章主要介绍了jenkins按模块进行构建的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Spring Cloud负载均衡及远程调用实现详解

    Spring Cloud负载均衡及远程调用实现详解

    这篇文章主要介绍了Spring Cloud负载均衡及远程调用实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot自动配置的8个技巧分享

    SpringBoot自动配置的8个技巧分享

    在 SpringBoot 2.x中,一个很核心的功能是自动配置机制,这篇文章主要为大家详细介绍了Spring Boot 2.x 实现自动配置的8个技巧,希望对大家有所帮助
    2025-01-01
  • Java Stream流之GroupBy的使用方式

    Java Stream流之GroupBy的使用方式

    本教程将详细介绍如何在 Java 中使用 Stream 流的 group by 方法,包括基本用法和一些常见的实际应用场景,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture

    Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture

    这篇文章主要介绍了Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • Spring事务管理配置文件问题排查

    Spring事务管理配置文件问题排查

    这篇文章主要介绍了Spring事务管理配置文件问题排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论