打印所有的“水仙花数”:满足以下条件:一,“水仙花数”都是三位数;二,每位数的三次方之和正好等于这个数,例:153 = 1*1*1 + 5*5*5 + 3*3*3
PS:本人为JAVA刚入门菜鸟,希望前辈们赐教,谢谢。

解决方案 »

  1.   


    int m,a,b,c;
    for(m=100;m<=999;m++)
    {
    a=m/100;
    b=m/10%10;
    c=m%10
    if(m=a*a*a+b*b*b+c*c*c)
    {System.out.printf("%d",m);}
    }
      

  2.   

    int i = Integer.MAX_VALUE;
    for(int j = 0;j<=i;j++){
       int s = j;
       int sum = 0;
       while(s!=0){
          sum = (s%10)*(s%10)*(s%10);
          s/=10;
       }
       if(sum == j)
       System.out.println(j);
    }  
      

  3.   

    这位仁兄的算法已经很简洁了,不过有点小错误,条件语句里面的比较符号应该是 “==”,这位仁兄写成赋值符号了。
    另外,你学过其他的语言么?这不是纯java啊,这就是一个算法啊,用c或者c++都可以实现啊你是不是像弄清楚java编程的具体格式?
      

  4.   

    这位仁兄是不是想把所有的满足那个条件的数全部找出来?如果按照楼主的要求,这个算法已经很多余了啊,何必多运算那么多次呢?另外,while循环里面的sum = (s%10)*(s%10)*(s%10)应该是sum += (s%10)*(s%10)*(s%10);否则你找出来的答案肯定是错误的
      

  5.   

    这是我平时记的一些常见算法、、希望对你有帮助、、、问题:
    水仙花数指三位数中,每个数字的立方和和自身相等的数字,例如370,3 × 3 × 3 + 7 × 7 × 7 + 0  ×0×0=370,请输出所有的水仙花数。
    该问题中体现了一个基本的算法——数字拆分,需要把一个数中每位的数字拆分出来,然后才可以实现该逻辑。
    实现思路:循环所有的三位数,拆分出三位数字的个位、十位和百位数字,判断 3个数字的立方和是否等于自身。
    则实现的代码如下所示:
                        for(int i = 100;i < 1000;i++){ //循环所有三位数
                          int a = i % 10; //个位数字
                          int b = (i / 10) % 10; //十位数字
                          int c = i / 100; //百位数字
                          //判断立方和等于自身
                          if(a * a * a + b * b * b + c * c * c ==i)
                          {
                            System.out.println(i);
                          }
                        }
    在该代码中,拆分个位数字使用i和10取余即可,拆分十位数字时首先用i除以十,去掉个位数字,并使原来的十位数字变成个位,然后和10取余即可,因为i是一个三位数,所以i除以100即可得百位数字,因为这里都是整数除法,不存在小数的问题。然后只需要判断立方和是否等于自身即可。
    注意:因为 i是循环变量,这里不能改变 i的值,不然可能造成死循环。
    完整程序:
    public class narcissus {
    public static void main(String[] args) {
     for(int i = 100;i < 1000;i++){ //循环所有三位数
                 int a = i % 10; //个位数字
                 int b = (i / 10) % 10; //十位数字
                 int c = i / 100; //百位数字
                 //判断立方和等于自身
                 if(a * a * a + b * b * b + c * c * c ==i)
                 {
                   System.out.println(i);
                 }
               }
    }}
      

  6.   

    while(i<1000)
    {
    j=i/100;
    k=(i-j*100)/10;
    l=i%10;
    if((Math.pow(j,3)+Math.pow(k,3)+Math.pow(l,3))==i)
    System.out.println(i+"是水仙花数");
    i++;
    }
      

  7.   


    public class daffodil {
    public static void main(String[] args){
    int i,a,b,c;
    System.out.println("1000内的水仙花数:");
    for(i=100;i<1000;i++){
    a=i/100;
    b=(i/10)%10;
    c=i%10;
    if(i==a*a*a+b*b*b+c*c*c){

    System.out.print(i+"  ");
    }
    }
    }
    }
      

  8.   

    这个不难吧?public static void main(String args[]) {
    int a,b,c,d,num=0;
            for(int i=101;i<1000;i++){
             a=i/100;
             b=i/10-a*10;
             c=i%10;
             d=a*a*a+b*b*b+c*c*c;
             if(i==d){
             num++;
             System.out.println("水仙花数 "+num+" : "+i);
             }
            }
        }