求:100~999之间的水仙花数 如何用java实现?

问题描述

水仙花数是指一个n位数(n>=3),它的每个位(比如三位数,指的就是个位,十位,百位)的数字的n次幂之和等于它本身。例如:1^3 + 5^3 + 3^3 = 153;
求:
100~999之间的水仙花数

问题分析

通过问题描述可知,水仙花数要满足每位上的数字的3次幂之和(因为是3位数:100~999)正好等于这个数的本身,那么我们可以从100开始,通过循环遍历,一个一个数字进行判断是不是满足这个条件,如果满足就要它打印出来
(1)确认程序的框架
通过前面的分析,从3位数100到3位数999,一个一个数字进行判断是不是满足条件;
(2)对数字进行分解
要判断一个数字是不是满足条件,关键是对数字进行分解,把个,十,百位都分解出来。
(3)求解数的三次方
个,十,百位都分解出来之后,接着就求它们的3次方,三次连乘即可。
(4)完整程序如下

package com.example;

public class test02 {
    public static int flower(int n){   //求3次方
        int m =1;
        for (int i =0;i<3;i++){        //循环三次实现三次相乘
            m=m*n;
        }
        return m;                      //返回结果


    }
    public static void main(String[] args) {
        int i,a,b,c;
        int count=0;

        for (i=100;i<999;i++){          //所有的3位数循环一遍
            a=i/100;                    //a代表的是百位上的数字
            b=i%100/10;                 //b代表的是十位上的数字
            c=i%10;                     //c代表的是个位上的数字
            if (flower(a)+flower(b)+flower(c)==i){
                System.out.println(i+"是水仙花数!");
            }
        }
    }
}


运行结果如下:
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值