java实现水仙花数(经典算法问题)

**

用java实现100-999中水仙花数的输出

**题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 以153举例:153=100+50+3=111+555+333 分析:提到水仙花数先想到% /这两个,153%100=53;153/100=1; 153/10=15;153%10=3;由此可见只需要将153分别进行处理就可以进行计算。 先进行一次循环,将要求的的100-999之间的数输出出来,(a,b,c,i,皆为整型变量) 设百位为a;十位为b;个位为c;i为100-999中的数; i/100运算完的结果为百位a; 用(i-100)再/10则得出十位b; 个位则直接对i%10得出十位c; a的三次方+b的三次方+c的三次方=总和,此时进行判断如果总和 i 的值相等则输出即可,代码如下:

public static void main(String[] args) {
        int a =0;
        int b= 0;
        int c=0;
       for(int i=100;i<1000;i++){
           a=i/100;
           b=(i-a*100)/10;
           c= i%10;
           int sum =(a*a*a)+(b*b*b)+(c*c*c);
            if(i==sum){
                System.out.println(sum+"   "+"百位是"+a+"十位是"+b+"个位是"+c);
                  }
             }
        }
经验分享 程序员 微信小程序 职场和发展