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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄诗宾 高级黑马   /  2013-3-19 18:42  /  3545 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄诗宾 于 2013-3-19 19:01 编辑

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

求解题思路及代码。主要是丝路 看不大懂 谢谢各位大大!!

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
  1. /*
  2.         需求:求出所有的水仙花数   使用    循环+条件
  3.         分析:水仙花数是三位数   它的特点  153=1x1x1+5x5x5+3x3x3
  4.         使用方法完成下面的功能:
  5.                                                 100~999的数中,百位上的数的三次方+十位上的数的三次方
  6.                                                 +个位上的数的三次方=数值的值,则此数为水仙花
  7.                                                 能够求出水仙花的个数
  8. */

  9. class Test2
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int [] arr=new int[900];
  14.                 fillNum(arr);
  15.                 int count=getCount(arr);
  16.                 System.out.println(count);

  17.         }
  18.         //将所有三位数顺序放入数组中
  19.         public static void fillNum(int [] arr)
  20.         {
  21.                 int num=100;
  22.                 for(int i=0;i<arr.length;i++)
  23.                 {
  24.                         arr[i]=num;
  25.                         num++;
  26.                        
  27.                 }
  28.         }

  29.         //得到水仙花的个数
  30.         //参数:存储100~999的数组
  31.         //返回值:得到水仙花的个数
  32.         public static int getCount(int [] arr)
  33.         {
  34.                 int count=0;
  35.                 for(int i=0;i<arr.length;i++)
  36.                 {
  37.                         int x=(arr[i]/100)%10;//得到百位数
  38.                         int y=(arr[i]/10)%10;//得到十位数
  39.                         int z=arr[i]%10;//得到个位数
  40.                         if(arr[i]==x*x*x+y*y*y+z*z*z)
  41.                         {
  42.                                 System.out.println(arr[i]);
  43.                                 count++;
  44.                         }
  45.                        
  46.                 }
  47.                 return count;
  48.         }
  49. }
复制代码
首先遍历100~999所有数,然后按照水仙花的规则,求出每一位数,每位数三次方再相加,得到的值是不是和本来的值相等,相等就打印出来

评分

参与人数 1技术分 +1 收起 理由
高境 + 1 赞一个!

查看全部评分

回复 使用道具 举报
/*
.求出所有的水仙花数   使用    循环+条件
        水仙花数是三位数   它的特点  153=1x1x1+5x5x5+3x3x3  
*/
class Test
{
        public static void main(String[] args)

        {  

                int a, b, c, d, i = 0;
               
                System.out.print("你要找的水仙花数为: ");

                for (a = 100; a < 1000; a++)

                        {   

                        b = a / 100;   c = (a / 10) % 10;   d = a % 100 % 10;   

                        if (a == b * b * b + c * c * c + d * d * d)

                                {

                                System.out.print(a+",");

                                i++;   

                                }

                        }

                        System.out.println("你找的水仙花个数为:" + i);
        }

}
回复 使用道具 举报
O了 谢谢
回复 使用道具 举报
穷举思想,把所有的三位数都遍历出来,符合条件的打印
public static void method1(){
               
                for(int i=100;i<1000;i++){
                       
                        //i就代表每一个三位数
                        int a1=i/100;
                        int a2=i/10%10;
                        int a3=i%10;

                        if(a1*a1*a1+a2*a2*a2+a3*a3*a3==i){
                                System.out.println(i);
                        }
                }
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马