注册 登录
编程论坛 JAVA论坛

JAVA每周一题(3)-----水仙花数

lampeter123 发布于 2010-06-28 09:29, 60900 次点击
求100-999中的水仙花数,(若三位数abc,abc=a^3+b^3+c^3, 则称abc为水仙花数。如153,1^3+5^3+3^3=1+125+27=153,则153是水仙花数)
18 回复
#2
谁与争疯2010-06-28 10:16
我X,搞这种。
#3
lampeter1232010-06-28 10:33
以下是引用谁与争疯在2010-6-28 10:16:21的发言:

我X,搞这种。
你是来结婚的吗?
#4
wy198604262010-06-28 19:13
public class FlowerNumber {
    public static void main(String[] args){
        System.out.println("100~999之间的水仙花数是:");
        for(int custNo=100;custNo<=999;custNo++){
            int geWei=custNo%10;
            int shiWei=custNo/10%10;
            int baiWei=custNo/100%10;
            if(custNo==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei){
                System.out.println(custNo);
            }
        }
    }
}


============================
0~999之间的水仙花数是:
153
370
371
407
#5
wy198604262010-06-28 19:14
以下是引用wy19860426在2010-6-28 19:13:30的发言:

public class FlowerNumber {
    public static void main(String[] args){
        System.out.println("100~999之间的水仙花数是:");
        for(int custNo=100;custNo<=999;custNo++){
            int geWei=custNo%10;
            int shiWei=custNo/10%10;
            int baiWei=custNo/100%10;
            if(custNo==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei){
                System.out.println(custNo);
            }
        }
    }
}


============================
0~999之间的水仙花数是:
153
370
371
407
打错了,是100~999之间
#6
ljwei2010-06-28 19:41
程序代码:
import java.util.Scanner;

public class shuixianhua
{
    public static void main(String[] args)
    {
    int x=100,i,a,b,c;
    for(;x<=999;x++)
        {
        a=x%10;b=((x-a)%100)/10;c=(x-b*10-a)/100;/*a为个位,b为十位,c为百位*/      
        if(x==(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)))
        System.out.print(x+"\t");
        }
   
    }
}
#7
珊瑚背2010-06-28 21:56
程序代码:
//水仙花数
class Daffodils {
    public static boolean isDaffodils(int a) {  //判断是否水仙花数
        int hundred = a / 100 % 10;
        int ten = a / 10  % 10;
        int unit = a % 10;
        return (a == hundred*hundred*hundred + ten*ten*ten + unit*unit*unit) ? true : false;
    }
  public static void printDaffodils(int a, int b) {   //输出从a到b的水仙花数
      for (int i = a; i <= b; i++) {
          if (Daffodils.isDaffodils(i))   
            System.out.println(i);
        }
    }
}

public class MyClass {
    public static void main(String[] args) {
        int from = 100, to = 999;      //从 100 到 999
        System.out.println("以下是您要的水仙花数 从" + from + "到" + to);
        Daffodils.printDaffodils(from, to);
    }
}
//欢迎拍砖,谢谢
#8
jiangwu100572010-06-30 06:25
程序代码:
import java.util.Scanner;

public class NarcissisticNumber
{
    static int place(int s)
    {
        int i=0;
        for(;s!=0;i++)
        {
            s/=10;
        }
        return i;
    }
    static void action(int s,int e)
    {
        int c=0,n;
        for(int i=s;i<=e;i++)
        {
            int sum=0,t=i;
            n=NarcissisticNumber.place(t);
            for(;t!=0;)
            {
                sum+=Math.pow(t%10,n);
                t/=10;
            }
            if(i==sum)
            {
                c++;
                System.out.println(i+"是水仙花数。");
            }
        }
        if(0==c)
        {
            System.out.println(s+"到"+e+"区间内没有水仙花数。");
        }
    }
    static boolean judge(int s)
    {
        int sum=0,n;
        n=NarcissisticNumber.place(s);
        for(int i=0,t=s;t!=0;i++)
        {
            sum+=Math.pow(t%10, n);
            t/=10;
        }
        if(s==sum)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    /**
     *
@param args
     
*/
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        
        System.out.println("请输入你要判断水仙花数的起始数字");
        int s=in.nextInt();
        System.out.println("请输入你要判断水仙花数的末数字,若只判断一个数是否为水仙花数,请输入1");
        int e=in.nextInt();
        if(e==1|s==e)
        {
            if(NarcissisticNumber.judge(s))
            {
                System.out.println(s+"是水仙花数。");
            }
            else
            {
                System.out.println(s+"不是水仙花数。");
            }
        }
        else
        {
            NarcissisticNumber.action(s,e);
        }
    }
}
这个是我老早以前写的   不管几位都能测
#9
linjx01232010-06-30 10:22
大家的思路都是把一个数按位拆开来运算的。怎么没有人反过来,按组合来做啊。比如153.就是由数字1,5,3组合起来的
只要满足a^3+b^3+c^3 = a*100+b*10+c就行了。从效率来讲,这样会好一点。
#10
看春2010-07-01 16:07
回复 9楼 linjx0123
因为拆分感觉比较直观,按照这种思路应该怎么写呢?谢谢指教!
#11
看春2010-07-01 17:11
public class sxh
{
    public static void main(String[] args)
    {
    for(int a=1;a<=9;a++){   
       for (int b=0;b<=9;b++){      
            for (int c=0;c<=9;c++){  
                int sx=a*100+b*10+c;
               if(sx==a*a*a+b*b*b+c*c*c)
                   System.out.println(sx);                 
                                   }
                              }
                          }
     }
}
#12
jiangwu100572010-07-02 09:43
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<Math.h>
int  main(){
    int f=1,s=0,t=0;
   
    for(;f<=9;f++){
        for(s=0;s<=9;s++){
            for(t=0;t<=9;t++){
                if(pow(f,3)+pow(s,3)+pow(t,3)==f*100+s*10+t){
                    printf("%d%d%d\n",f,s,t);
                }
            }
        }
    }
    return 0;
}
来个c版本
#13
走马_观花2015-07-30 15:19
回复 楼主 lampeter123
public class Flower_number {
    public static void main(String[] args) {
        int i=0;
        int m,n;
        for(int a=1;a<10;a++){
            for(int b=0;b<10;b++){
                for(int c=0;c<10;c++){
                    m=a*100+b*10+c;
                    n=a*a*a+b*b*b+c*c*c;
                    if(m==n){
                        i++;
                        System.out.println("水仙花数为"+m);
                    }
                }
            }
        }
        System.out.println("水仙花数总共有 "+i+" 个");
   
    }
}
打印结果:
    水仙花数为153
    水仙花数为370
    水仙花数为371
    水仙花数为407
    水仙花数总共有 4 个
   
谁能教我怎么显示
    水仙花数总共有 4 个
    水仙花数为153、370、371、407
#14
pan8914559162015-10-13 13:15
public class shuiXianHua {
    public static void main(String args[]){
        System.out.println("100-999间的水仙花数有:");
        for(int p=100;p<999;p++){
            int i,j,k;
            i=p%10;
            j=(p%100-i)/10;
            k=(p-j*10-i)/100;
            if(Math.pow(i,3)+Math.pow(j,3)+Math.pow(k, 3)==p)
                System.out.println(p);                    
        }
    }
}
#15
半成品2015-10-30 13:17
回复 14楼 pan891455916
程序代码:
public class Narcissistic{
    public static void main(String[] args){
      

        int[] e = new int[10];
        int f=0;
        for(int a=100;a<1000;a++){
            int b = a/100;
            int c= a/10-b*10;
            int d = a-b*100-c*10;
               

            if(Math.pow(b,3)+Math.pow(c,3)+Math.pow(d,3)==a){
               

               

                e[f] = a;
                f++;
            }
      

        }
        System.out.println("水仙花共有:"+ f+"个" );
        System.out.print("水仙花数有:");

        for(int i=0;i<=f;i++)
        System.out.print(e[i]+"\t");
      

      

      

    }
}




#16
曾令杰2015-11-10 15:39
public class BreakLabelFor {

    public static void main(String[] args) {
         for(int a=1;a<=9;a++){
            for(int b=0;b<=9;b++){
                for(int c=0;c<=9;c++){
                    if(100*a+10*b+c==a*a*a+b*b*b+c*c*c){
                        System.out.println(100*a+10*b+c);
                        
                    }
                }
            }
        }

    }

}
#17
一边倒2016-10-13 09:31
回复 10楼 看春
public static void shuiXianHua(){
        for(int a=1;a<=9;a++){
            for(int b=0;b<=9;b++){
                for(int c=0;c<=9;c++){
                    if(Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3)==a*100+b*10+c){
                        int shuxiahua = a*100+b*10+c;
                        if(shuxiahua>100&&shuxiahua<=999){
                            System.out.println(shuxiahua+",");
                        }
                    }
                }
            }
        }
    }
#18
小蘇2017-02-22 15:16
    public static void main(String[] args)
    {
        int a,b,c;
        for( a=1;a<=9;a++)
        {
            for(b=0;b<=9;b++)
                {
                    for(c=0;c<=9;c++)
                        {
                            if(a*a*a+b*b*b+c*c*c==a*100+b*10+c)
                            {
                    
                            System.out.println(a*100+b*10+c);
                    
                            }
            
                      }
                 }
            }
     }
这是我写的,就是感觉嵌套太多了
#19
愿吖吖2017-03-20 12:32
public class shuixianhua {
    public static void main(String [] args){
       Flower f=new  Flower();
       f.shuixianhua();
    }

}
   class Flower{
       int i;
       int j;
       int k;
       public void shuixianhua(){
           for(i=1;i<10;i++)
               for(j=1;j<10;j++)
                   for(k=1;k<10;k++)
                       if((i*i*i+j*j*j+k*k*k)==i*100+j*10+k*1)
                           System.out.println("水仙花数为:"+i*100+j*10+k*1);
       }
   }
1