A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呆呆devil 初级黑马   /  2018-6-12 13:24  /  855 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我看了今年的视频,发现对比往年视频并没有水仙花数求个数的问题,但我个人觉得水仙花数这个题目还是有必要钻研一下的,这个题目能对大家对于运算符和循环的使用是有着巨大的好处,下面我来给大家发布一下在这个问题,有兴趣的同学的可以看下。
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
那么水仙数有哪些呢?



解答:开始看到这问题我也有些疑惑,按着我开始的思路假设个位为a,十位为b,百位为c,那么按我的想法a的三次方+b三次方+c三次方=水仙花数,9>a>0,9>b>0,9>c>0在用循环求出所有符合的数字。但在后面我遇到了问题for循环并不能实现我的想法,无法让a=0,b=0,c=1这样一次次逐步上升,接着我就改变了思路,下面是我之后所写的代码,有for和while两种循环方式。
求水仙花数
class Demo {
        public static void main(String[] args) {
        int d = 0;
        for (int i = 100;i <= 999 ; i++){
        int a = i % 10;
        int b = i /10 % 10;
        int c = i /10 /10 %10;
        if (i == a*a*a+b*b*b+c*c*c){
        d ++;
          }
}
        System.out.println(d);
        }
}
class Demo {
        public static void main(String[] args) {
        int x =100;
        while (x < 1000){
        int a  = x % 10;
        int b = x /10 %10;
        int c =x /10 /10 ;
        if (x == a*a*a+b*b*b+c*c*c){
        System.out.println(x);
                }
        x++;
        }
        }
}
以上代码大家可以借鉴一下,并思考下为何这样可以实现。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马