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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 请叫我丶菜鸟 中级黑马   /  2014-12-11 18:57  /  1746 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 请叫我丶菜鸟 于 2014-12-12 22:53 编辑

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

个位:153%10=3               
十位:150/10%10=5        150怎么得到呢? 153/10*10
百位:100/100%10

*/

class  Prog3
{
        public static void main(String[] args)
        {
                isLotus();
        }

         static void  isLotus()
        {
                double sum=0;                //个位上的数值
                int count=0;        //十位上的数值
                int gw,sw,bw;        //百位上的数值

                //下面的循环是判断是否符合水仙花
                for(int x=100;x<=999;x++)
                {
                        gw=x%10;
                        sw=x/10%10;
                        bw=x/100%10;

                        //sum=gw*gw*gw+sw*sw*sw+bw*bw*bw;
                        sum=Math.pow(gw,3)+Math.pow(sw,3)+Math.pow(bw,3);//注:Math.pow(a,b)——这个是求a的b 次方
                        if(sum==x)//判断这个数是否符合水仙花规律
                        {
                                System.out.println(x);
                                count++;//用于统计水仙花的个数
                        }
                }
                System.out.println("水仙花的数共有:"+count);
                //System.out.println(153/10);
        }
}

16 个回复

倒序浏览
厉害,看来我也要加油了!
回复 使用道具 举报
这个貌似有点复杂。。。。。
回复 使用道具 举报
本帖最后由 -律- 于 2014-12-12 01:15 编辑

153的思路应该是这样
x = 1 + 100;
y = 5 + 10;
z = 3;

下面发一段我的代码,你看需要可以参考一下,最好是了解一下思路,再自己做

class Title2
{
public static void main(String[] args)
{
for (int num = 100; num < 1000; num++)
{
int b = num / 100;
ints = num / 10 % 10;
intg = num % 10;

if (b*b*b+s*s*s+g*g*g == 100*b+10*s+g)
System.out.println("打印出的水仙花数有:"+ num);
}
for (int num = 1000; num < 10000; num++)
{

回复 使用道具 举报
  1. public static void main(String[] args)
  2.         {
  3.                 int n = 0;

  4.                 for(int i=1;i<10;i++)
  5.                 {
  6.                         for(int j=0;j<10;j++)
  7.                         {
  8.                                 for(int k=0;k<10;k++)
  9.                                 {
  10.                                         n = i*100 + j*10 + k;
  11.                                         if(n == i*i*i+j*j*j+k*k*k)
  12.                                                 System.out.println("水仙花数="+n);
  13.                                 }
  14.                         }
  15.                 }
  16.         }
复制代码


水仙花数这样也可以的,i、j、k,分别代表百位、十位、个位,遍历

点评

这样做也可以,但这样做我觉得效率会低了点。  发表于 2014-12-14 10:32
你这样做对吗  发表于 2014-12-13 08:56
回复 使用道具 举报
聪明叉 发表于 2014-12-12 08:16
水仙花数这样也可以的,i、j、k,分别代表百位、十位、个位,遍历

这个复杂度太高了
回复 使用道具 举报
这是测试题目吗??
回复 使用道具 举报
赞一个,写的都不错。
回复 使用道具 举报
zcqing 发表于 2014-12-12 16:50
这个复杂度太高了

Are you sure?虽然三个for循环,但是这样才是最容易理解的吧
回复 使用道具 举报
其实不是很难,就是for循环的应用
回复 使用道具 举报
聪明叉 发表于 2014-12-12 08:16
水仙花数这样也可以的,i、j、k,分别代表百位、十位、个位,遍历

:L亲,三层循环有点复杂哦
回复 使用道具 举报
@a371166028 不相信你自己运行试试
回复 使用道具 举报
菜鸟一号 发表于 2014-12-13 08:55
亲,三层循环有点复杂哦

可是很好理解啊,最高位在外圈
回复 使用道具 举报
  1. class Demo{
  2.                   public static void main(String[] args)  {
  3.                                     int count = 0;
  4.                                     for(int num = 100 ; num <= 999 ; num++){
  5.                                                      int ge = num % 10;
  6.                                                      int shi = (num / 10) % 10;
  7.                                                      int bai = (num / 100) % 10;
  8.                              if((ge * ge * ge + shi * shi * shi + bai * bai * bai) == num){
  9.                                                                         System.out.println("水仙花数:" + num);
  10.                                                                          count++;
  11.                                }
  12.                                      }
  13.                                       System.out.println("水仙花数的数量是:" + count);
  14.         }
  15. }
复制代码


回复 使用道具 举报
  1. for (int i = 100; i < 1000; i++) {
  2.                         if (i == Math.pow(i / 100, 3) + Math.pow(i / 10 % 10, 3)
  3.                                         + Math.pow(i % 10, 3)) {
  4.                                 System.out.println(i);
  5.                         }
  6.                 }
复制代码

               
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马