求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1^3+5^3+3^3,则153是一个“水仙花数“。)

该博客介绍了如何使用Java编程解决水仙花数问题。通过遍历1到999999之间的整数,计算每个数的每一位数字的立方和,如果等于原数,则为水仙花数。博客详细展示了代码实现过程,包括数的位数计算、求次幂等关键步骤,并提供了完整的Java代码示例。
摘要由CSDN通过智能技术生成

这道题要想算出水仙花数需要三步:

         1.计算给出数一共是多少位。                          eg:153

         2.求每一位都是几。                                                1    5    3

         3.把每一位数字是几,位数的次幂算出来。            1^3+5^3+3^3=x

输出x。

已知本题需要求次幂,则需要求次幂函数Math.pow

 

首先,让给定数多次除以10,除以几次就是几位数。

 现在count里面就存储了i的位数。

又因为不能更改i里面存储的数字,所以设置一个tmp=i用来替换i。

下一步我们需要同时完成步骤2和步骤3:

首先我们得知让i里存储的数字先%10取出其中一位然后取位数次幂,最后再/10无限次数重复直至数字为零,即可求出次数是不是水仙花数

 

 注意:

这里的Math.pow函数返回值为double,而sum设定的是int,为了不强制转换用+=符号即可避免(上一章讲过。)

看Java的源代码:

按住ctrl+鼠标左键点到方法上即可查看这个方法的源代码。

最后就完成了这个题:

 public static void main(String[] args) {
        for (int i = 1; i < 999999; i++) {
            int num = 0;
            int tmp = i;
            int count = 0;
            int sum = 0;
            while (tmp != 0) {
                tmp = tmp / 10;
                count++;
            }
            tmp = i;
            while (tmp != 0) {
                sum += Math.pow(tmp % 10, count);
                tmp /= 10;
            }
            if (sum == i) {
                System.out.println(i);
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值