黑马程序员技术交流社区

标题: 如何编写一个水仙花树 [打印本页]

作者: 上帝的寵兒    时间: 2015-10-30 12:51
标题: 如何编写一个水仙花树
这是在面试中常常遇见的一个问题,哪位大神分享一下标准代码??
作者: gih146    时间: 2015-10-30 16:35
是要水仙花数么
  1. /*
  2. 输出所有的水仙花数,所谓水仙花数是指一个3
  3.    位数,其各个位上数字立方和等于其本身。
  4.     例如: 153 = 1*1*1 + 3*3*3 + 5*5*5

  5. */
  6. class For04 {
  7.         public static void main(String[] args)
  8.         {
  9.                 for(int i=100;i<=999;i++){//遍历所有三位数

  10.                         int a =i/100; //百位上的数
  11.                         int b =(i-a*100)/10;//十位上的数
  12.                         int c =i%10;//个位上的数
  13.                         if(i==(a*a*a)+(b*b*b)+(c*c*c)){
  14.                                 System.out.println(i);
  15.                         }


  16.                 }
复制代码



作者: czcjyqm    时间: 2015-10-30 17:33
楼上的就是我们老师讲课时用的代码

作者: young_ants    时间: 2015-10-30 19:04
  1. class Demo_Flower {
  2.         public static void main(String[] args) {
  3.                 int count = 0;                //定义计数器,存储水仙花的个数
  4.                 for (int i =100; i <= 999; i ++) { //确保其是三位数
  5.                         int ge = i % 10;   //获取个位数字,只需要用10求余
  6.                         int shi = i / 10 % 10;  //获取十位数字,先对其除10,再求余
  7.                         int bai = i / 10 / 10 % 10;  //获取百位数字,相当于int bai = i / 100 & 10;

  8.                         if (ge*ge*ge + shi*shi*shi + bai*bai*bai == i) {  //个位数字三次方,十位数字三次方与百位数字三次方的和等于这个数,就是水仙花数.java目前没有直接求三次方的运算符号,只能这样写
  9.                                 System.out.print(i + "\t");  //打印输出水仙花数
  10.                                 count ++;
  11.                         }
  12.                 }
  13.                 System.out.println("\n水仙花的个数为:" + count);
  14.         }
  15. }
复制代码

作者: shiawase    时间: 2015-10-30 20:52
加油!加油!加油!加油!加油!加油!加油!加油!
作者: y83685975    时间: 2015-10-30 21:05
加油!!!!!!!!!!
作者: feng0606    时间: 2015-10-30 21:37
这个面试应该不会常问吧???
作者: 北极的男娃    时间: 2015-10-30 21:44
这个很普通吧
作者: 水小新    时间: 2015-10-30 21:48
第一天发的种子就有
作者: dai2686779    时间: 2015-10-30 22:58
66666666666666666
作者: zhengsx    时间: 2015-10-31 09:02
  1. /*
  2.         需求:求出100至999的水仙花数,记录水仙花数的个数并输出。
  3.                 水仙花数:各个位上的数字的立方和等于这个数本身的数。
  4.         思路:在for遍历从100至999,判断是否水仙花数,是的话输出这个数。
  5.                 定义一个函数:输入一个数,返回这个数各个位上的立方和
  6.                 定义一个函数:输入一个数,求出这个数的立方

  7. */

  8. class ShuiXianHuaShu {
  9.         public static void main(String[] args){
  10.                 int count = 0;//计数器
  11.                 for (int i = 100;i <1000 ; i++) {
  12.                         if(i == cubeSum(i)){
  13.                                 count++;
  14.                                 System.out.println(i);
  15.                         }
  16.                 }
  17.                 System.out.println("水仙花数的个数:"+count);
  18.         }
  19.        
  20.         //cube(num)求一个数的立方
  21.         private static int cube(int num){
  22.                 return num*num*num;
  23.         }

  24.         //addSum(num)求一个数各个位上的立方和
  25.         private static int cubeSum(int num){
  26.                 int sum = 0;
  27.                 for (int i =1;i<=3 ;i++ ) {
  28.                         int key = num % 10;
  29.                         sum = sum + cube(key);
  30.                         num = num / 10 ;
  31.                 }
  32.                 return sum;
  33.         }
  34. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2