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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

需求;
打印出所有的"水仙花数"。
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:
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
    */
    }
   }

14 个回复

倒序浏览
学习了!!!!
回复 使用道具 举报
有时间看看。
回复 使用道具 举报
学习了……
回复 使用道具 举报
学习学习
回复 使用道具 举报

学习学习
回复 使用道具 举报
Claw 中级黑马 2015-7-27 23:14:33
7#
为什么全是注释
回复 使用道具 举报
.................................
回复 使用道具 举报
学习了,,,
回复 使用道具 举报
看看,挺有意思的一道题。
回复 使用道具 举报
为什么这么水
回复 使用道具 举报
好吧,又懂了什么叫水仙花数
回复 使用道具 举报
libin 中级黑马 2015-7-28 09:06:34
13#
  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. }
复制代码

用了第一种方法
回复 使用道具 举报
程序看起来确实不是很方便!
回复 使用道具 举报
看看,学习学习。总结总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马