黑马程序员技术交流社区

标题: 所有程序员必须经历的一道基础题 [打印本页]

作者: n361204357    时间: 2015-7-25 00:06
标题: 所有程序员必须经历的一道基础题
需求;
打印出所有的"水仙花数"。
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

      这道题应该是程序员必须经历的一道题,体现一个程序员的思路问题。
这道题有很多方法可以实现,检验一下自己吧。
提示:
1:采用循环取得所有的三位数。(三位数指的是100-999之间的数)。
2:把每个三位数的个位,十位,百位进行分解。


附思路和总结

  /*
  for(int x=100;x<1000;x++)     
  {
   //if(x==(((x-x%100))/100)*(((x-x%100))/100)*(((x-x%100))/100)+((x%100)/10)*((x%100)/10)*((x%100)/10)+(x%10)*(x%10)*(x%10))
   //System.out.println(x);
  /*
  for(int x=100;x<1000;x++){
  int a=x%10;
  int b=x/10%10;
  int c=x/10/10%10;
  if(x==a*a*a+b*b*b+c*c*c){
   System.out.println(x)
   }
  */
   

   for (int a=1;a<10 ;a++ )
  {
   for (int b=0;b<10 ;b++ )
   {
    for (int c=0;c<10 ;c++ )
    {
     if ((a*100+b*10+c)==(a*a*a+b*b*b+c*c*c))
     {
      System.out.println(a*100+b*10+c);
      }        
  }
  

  /*
  int i =100;
     for(;i<1000;i++)
  {
    int x =i%10;
    int y =i%100/10;
    int z =i/100;
    if(x*x*x+y*y*y+z*z*z==i)
    {
     
     System.out.println("i="+i);*/

  /*取个位   x%10
    取10位   x\10%10        x%100/10
    取100位  x\10\10%10     x/100         (x-x%100)/100
    */
    }
   }


作者: halohoop    时间: 2015-7-25 00:45
学习了!!!!
作者: fantianfei    时间: 2015-7-25 01:02
有时间看看。
作者: eayonh    时间: 2015-7-25 06:42
学习了……
作者: 蔡锐    时间: 2015-7-25 08:30
学习学习
作者: wy911011    时间: 2015-7-27 23:04

学习学习
作者: Claw    时间: 2015-7-27 23:14
为什么全是注释
作者: 任有智双元    时间: 2015-7-27 23:28
.................................
作者: chad8753    时间: 2015-7-28 00:06
学习了,,,
作者: T-l-H、小生    时间: 2015-7-28 00:19
看看,挺有意思的一道题。
作者: 章浩    时间: 2015-7-28 00:31
为什么这么水
作者: 泛大陆    时间: 2015-7-28 08:22
好吧,又懂了什么叫水仙花数
作者: libin    时间: 2015-7-28 09:06
  1. /*题目:打印出三位数的所有水仙花数
  2.    思路:利用三层循环遍历所有的三位数,判断如果为水仙花数则打印出来
  3.    */

  4. class Test
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 for(int i=1;i<10;i++)   //外层循环,代表百位数,从1~9
  9.                 {
  10.              for(int j=0;j<10;j++)   //中层循环,代表百位数,从0~9
  11.                          {
  12.                                  for(int k=0;k<10;k++)  //里层循环,代表个位数,从0~9
  13.                                  {
  14.                       if((i*100+j*10+k)==(i*i*i+j*j*j+k*k*k))
  15.                                                   System.out.println(i*100+j*10+k);
  16.                                  }
  17.                          }
  18.                 }
  19.         }
  20. }
复制代码

用了第一种方法
作者: halohoop    时间: 2015-7-28 09:08
程序看起来确实不是很方便!
作者: xiaoshaoye    时间: 2015-7-28 10:04
看看,学习学习。总结总结




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