超简单地输出所有水仙花数(Java实现)

超简单地输出所有水仙花数(Java实现)Java 实现输出水仙花数 保姆级

超简单地输出所有水仙花数(Java实现)

今天打算将以前简单又基础的练习题拿出来分享以下,虽然很简单,但也很适合刚入门的小白练练手,熟悉熟悉以下。

 ?‍?开场还是得简单以下水仙花数是一种什么样的数。


 ❀水仙花数:        

        水仙花数只是自幂数的一种,也被称为(超完全数字不变数)水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身,例如:1^3 + 5^3+ 3^3 = 153。严格来说3位数的3次幂数才称为水仙花数。可还存在着其它位数所对应的水仙花数。

例如:

三位自幂数:水仙花数;三位的水仙花数共有4个:153,370,371,407;

四位自幂数:四叶玫瑰数;四位的四叶玫瑰数共有3个:1634,8208,9474;

五位自幂数:五角星数;五位的五角星数共有3个:54748,92727,93084;

六位自幂数:六合数;六位的六合数只有1个:;

=====================================================================

等等,对于这些水仙花数的名称我们无需了解,只要知道是什么原理就可以,无非就是对于几位数的每一位上的自身几次幂之和等于本身(例如五位数,每一位进行五次幂之后再相加得出的结果会等于这个五位数,就符合条件),就属于水仙花数。

废话不多说,接下来分析如何通过代码如何实现输出水仙花数。

如果单单打印所有的3位水仙花数,下面这个代码应该是最无脑的。

对于打印3位的水仙花数,我们可以稍微分析一下,

水仙花数对应的是每一位数自身位数的幂相加等于自身,那么如果要实现这个代码,可以把从100到999的每一数字的个十百位提取出来,然后加以比较,看看是否符合条件,如果符合条件则打印,否则则继续循环,直到将100到999的每个数判断完为止。

代码示例:

public class TestDemo1 { public static void Prints(){ for (int i = 100; i < 1000; i++) { int j = i % 10; //个位 int k = i / 10 % 10; //十位 int l = i / 100; //百位 if (i==(j*j*j)+(k*k*k)+(l*l*l)) { System.out.print(i + " "); } } } public static void main(String[] args) { System.out.println("打印1到1000内的符合水仙花的数"); Prints(); } } //运行结果: //打印1到1000内的符合水仙花的数 //153 370 371 407 

其中判断条件可以利用Java内的Math类进行以某一位数为底数,以一共几位数为指数的幂值,例如163——-Math.pow(1,3)+Math.pow(6,3)+Math(3,3);

=====================================================================

Math类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。

超简单地输出所有水仙花数(Java实现)

 

public class TestDemo1 { public static void Prints(){ for (int i = 100; i < 1000; i++) { int j = i % 10; //个位 int k = i / 10 % 10; //十位 int l = i / 100; //百位 if (i==Math.pow(j,3)+Math.pow(k,3)+Math.pow(l,3)) { System.out.print(i + " "); } } } public static void main(String[] args) { System.out.println("打印1到1000内的符合水仙花的数"); Prints(); } }

但如果我们不止想打印三位数的水仙花数,还想打印四位的,五位的,甚至是六位的,用上面这种方法太局限了,是无法实现 。要想实现打印跟高位数的水仙花数,得多增添一步,判断当前数的位数是多少,再根据位数进行对应幂数的相加。

(1)首先我们以打印从1到为例的水仙花数(0不为水仙花数),先在循环内写一个判断位数的代码。

 while(j!=0){ //判断当前数是几位数(j是1到某一个数,通过for循环内的i来赋给j,在每一次循环中进行一次赋值) ret++; //位数值 j/=10; //通过每一次除10来使当前值进行循环判断 }

(2)之后就可以求每一位数的幂和,将i赋给一个新的整型n,通过n取余来提取个位数后,再通过除10来对n进行更新,以sum来计算幂的和,当n除到等于0时,便结束提取的过程。

while(n!=0){ //计算每一位数幂的和 sum+=Math.pow(n%10,ret); n/=10; }

(3)最后判断是否满足每一位数的幂和,是否等于自身,满足条件输出,不满足则跳过,继续循环判断。

if(sum==i){ System.out.println(i); }

=====================================================================

完整代码:

public class TestDemo2 { public static void Print() { for (int i = 1; i < 999_999; i++) { int j=i,ret=0,n=i,sum=0; while(j!=0){ //判断当前数是几位数 ret++; j/=10; } while(n!=0){ //计算每一位数幂的和 sum+=Math.pow(n%10,ret); n/=10; } if(sum==i){ System.out.print(i+" "); } } } public static void main(String[] args) { Print(); } } //运行结果: //1 2 3 4 5 6 7 8 9 153 370 371 407 1634 8208 9474 54748 92727 93084  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231684.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月27日 下午3:01
下一篇 2025年11月27日 下午3:22


相关推荐

  • 2021.5.1idea激活码(最新序列号破解)

    2021.5.1idea激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    58
  • BigInteger可以计算超出Integer范围的数

    BigInteger可以计算超出Integer范围的数BigInteger 可以让超过 Integer 范围内的数据进行运算构造方法 BigInteger Stringval publicclassB publicstatic String args 这几个测试 是为了简单超过 int 范围内 Integer 就不能再表示 所以就更谈

    2025年8月29日
    6
  • C++和Java哪个好?为什么都选择Java?

    C++和Java哪个好?为什么都选择Java?Java 与 C 都拥有相当长的历史 且语法相当类似 并被众多业界巨头所采用 C 和 Java 哪个好 事实上 Java 本来就是从 C 衍生出来的 但是为什么大家都选择 Java 本篇文章来给大家分析一下 个人观点 勿撕 C 和 Java 哪个好 语法 两种语言中的循环结构 类 变量定义以及条件运算符非常相近 意味着开发者能够轻松在不同项目中分别使用这两种语言 而不会遇到太多障碍 入口点 在程序启动时 编译器或者解释器会查找开始执行的对应位置 Java 与 C 都以 main 作为入口点 面向对象 面向对

    2026年3月17日
    4
  • chatgptai智能体怎么创建

    chatgptai智能体怎么创建

    2026年3月16日
    2
  • linux加静态路由命令,LINUX添加静态路由「建议收藏」

    linux加静态路由命令,LINUX添加静态路由「建议收藏」LINUX添加静态路由建议,先用命令添加,测试生效未有其他影响后,添加到配置文件中。以本次127前置添加静态路由为例用户需要添加路由如下,命令格式为windows添加格式。route-a-p10.113.70.0mask255.255.255.010.113.65.44route-a-p10.113.70.240mask255.255.255.24010.113.6…

    2022年10月4日
    8
  • 腾讯云PHP环境ssl,Windows 64位下为wampserver或phpstudy 腾讯云免费SSL证书安装

    腾讯云PHP环境ssl,Windows 64位下为wampserver或phpstudy 腾讯云免费SSL证书安装目录如文章对你有用的话请点个赞1.下载证书​解压后复制Apache文件夹​2.打开httpd.ini配置文件LoadModulessl_modulemodules/mod_ssl.so将这行的注释的“#”去掉Includeextra/httpd-ssl.conf将这行的注释的“#”去掉ps:没有就添加3.接下来:extra/httpd-ssl.conf文件ServerName后面改成你…

    2025年10月9日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号