设为首页收藏本站联系我们

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
JSP虚拟主机本站QQ群:36839023广告位招租JSP空间
查看: 8809|回复: 6

【每周一题】第3期:水仙花数

[复制链接]
  • TA的每日心情
    开心
    2014-8-28 10:49
  • 签到天数: 141 天

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。( F' \: G, {1 B4 m+ K$ h7 N
    " W4 |$ P# s7 g0 G
    要求:1、测试通过;
    1 |0 N- E5 F; c6 a      2、界面友好;
    , C! H) V( Y0 x2 c7 [% I# K7 ~0 C      3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {" s+ i; ?! H+ b# x: i* F
            public static void main(String[] args) {
    / }8 j, C5 S0 s( w4 T) h3 g9 Y: B) K1 L% s9 [3 r
                    for (int i = 1; i < 10; i++)) Q; b: ]% G  r! F0 x+ }6 `
                            for (int j = 1; j < 10; j++)
      J6 S6 u6 ?! M' t% a                                for (int k = 1; k < 10; k++)
    5 I% a: }) m2 Y" v+ z: G) T                                        if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))/ O, H/ u1 N0 {3 j3 O0 }  u% i
                                                    System.out.println(i + "" + j + "" + k);
    % V9 Y8 s4 _, p$ ~3 F  }  F/ b        }
    . J  p: B8 s" w! h% D, p7 Y  v5 l# ?! l( B8 y3 B& {
    }! S+ {. ?8 v4 d) \- h1 U4 j3 b2 P

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;
    2 P1 ~+ A  P, B$ B( T' m' n5 Z- o7 A8 J# x7 B7 B2 o2 [
    public class waterflowernumber {
    7 s, {* w( V2 G& _9 ^' N$ c/ E& k) B: y4 _, n1 D7 Q3 L
            public static void main(String[] args) {
    ( f3 ]1 w! c: Z( u                waterflowernumber d = new waterflowernumber();
    2 N$ M0 {; r) X- G! }5 c4 }- W                d.printDaffodil();
    * c( R9 U0 e: G3 C# \        }
    # [0 U& [5 [" U% }8 s/ h2 O5 s        /*********( k  K1 `6 q) ?9 `, d
             * 打印100~1000之间的所有水仙花数
      U6 j0 C; M" |  j5 L         */3 W0 Q3 D2 B/ q9 x
            public void printDaffodil(){
    * E$ |5 ~6 p" e& j6 K: \                for(int i=1000;i<10000;i++){2 n% \- {" E7 X. J4 M
                            /*if(isDaffodil(i)){
    3 H) [  N7 t3 @: M- \  |& C0 K: W9 a                                System.out.printf("%-5d",i);
    % N5 {% g: a% E: O/ L                        }*/* g9 ]- s7 A, K9 s. \! H4 e' \4 r: s, m
                            if(isDaffodil2(i,4)){
    ) q1 J  o1 I* g, O3 H' x                                System.out.printf("%-5d",i);
    3 I! W# R& [& i2 P                        }
    * b& p, i! W* f2 C                }" c+ n- s( B. u$ M9 q
            }) [+ I$ [' b% y* y! W* ?
            /*******************
    + l# v7 Q6 w9 F1 M5 I0 G  ]6 @         * 判断给定的数是否是水仙花数. w+ V! \, d. ~3 y  H2 h: p" b- I
             *
    6 b' J  L# V3 Q8 v# x+ _+ i6 p         * @param data
    $ w4 ^. C# ]9 b4 [+ g0 L( {5 ~         * @return7 A) i/ T; h. ?8 o  R! l
             */7 U7 S1 r8 [3 r' e$ Z+ z
            public boolean isDaffodil(int data){
    , L7 B2 [9 {$ r% [& {1 s                //做边界判断/ T' c$ r1 h/ S2 y. e
                    if(data < 100){
    ; B6 d$ }5 E* W1 ^# ]" H3 @8 U                        System.err.println("参数不合法:"+ data);
    ) R+ q1 z# ^2 ~" V! t                        return false;. U2 U* O# x' n, u3 q
                    }
    1 l3 l! X( l& D1 K+ B, k  ~                //1.得到百位数& f( F+ T( u! J: F: k3 f
                    int b = data / 100;
    , g  I7 A' r: h$ k( P8 b                //2.得到十位数. K, d+ q- U7 O  J/ o0 R$ W
                    int s = data % 100 / 10;, [; g3 {9 x) V4 o, N& p: Y3 K
                    //3.得到个位数
    ! L3 D8 ^5 L4 {! f) M' [9 e: |9 E                int g = data % 10;
    9 R/ E* R  f0 {; _, X                //4.做判断
    & d' n5 v8 E& p+ `/ G7 F5 f. N( _/ K                if(Math.pow(b,3)2 r' H# Q, S3 a9 t! k4 u6 D
                                    +Math.pow(s,3)
    + O  K" u- e: X0 t$ x5 n                                +Math.pow(g, 3) == data){
    6 c7 I3 }, ]$ {0 }. @                        return true;% V5 N! }8 T5 X6 K# w
                    }else{8 K$ M8 U7 Y& z+ Z
                            return false;
    4 O: E  n" y5 [                }
    4 ^7 u3 [2 C$ {1 X        }+ b$ q2 E. W6 l7 B% I% E
            // 23422, 57 L! p  P1 H% r2 p( k
            public boolean isDaffodil2(int data,int n){
    4 o& t' e" y) N: |, r7 M                int result = 0; //保存各个位数的N次幂之和3 E; R3 B; r- a7 t6 ~! b
                    final int temp = data; //保存data,以便后面进行比较
    % W0 Y: s/ V. Q; j/ r                for(int i=n-1;i>=0;i--){# N; y8 }& H, T
                            int m = (int)(Math.pow(10,i));
    $ c: x4 s% J- v- a: @" C                        //求出每一位. R% l( y% z/ V" W# }9 H( y/ e' m& \
                            int bit = data / m;
    : j; R  a* y5 y/ X6 _; g                        //把数去掉最高位
    - [4 d9 a) N: r/ T+ F7 J+ e                        data %= m;
    - ]2 ?# m5 {' s. K                        //要把每一位数的n次幂相加.
    + |7 }+ D% j) z" O0 r+ w7 @* y6 t                        result += Math.pow(bit, n);; v, e3 h8 o5 {
                    }$ u1 N# t$ u9 y% n
                    //比较
    : R% s$ i+ K' p                if(result == temp){
    * }! A# X* t" o4 K8 |" [                        return true;! T( ?+ l; W/ r" W* b
                    }else{+ b! Q, ?, Y: V; M, F
                            return false;  P; }' q* g: c$ N( s4 ]" W
                    }
    & [5 i3 c! c# z5 c        }
    . J: k$ T7 f# |$ s}

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢( H! T* r: ?1 D" j+ ^
    public class ShuiXianFlower {
    1 [, ?' ]) B* k3 M$ N9 g( f; g        public static void main(String[] args) {) l' {& P; a3 c& I: Y: ]  f
                    //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
    $ F8 }' G5 [5 i                //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "# l( O7 s' f  P
                    result();
    : M, y8 R2 j" H4 b" g        }6 U' L6 E1 C- X! R+ t

    " o9 I6 m! D( j0 f        private static void result() {
    4 z& S/ z7 W4 N3 A2 o8 D9 t                for(int i=100;i<1000;i++)5 ]$ q7 l: H+ V3 ^" {2 \: p! z
                    {
    / o# T( `4 M% f                        //求百位数:i/100 求十位数:i/10%10 求个位数:i%10! F. e) m: e6 Q. B, |
                            //如果相等 则输出( W% v, @. ]) J
                            if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))6 u/ b0 J; ~6 q
                            {7 b. M7 G! ~$ X1 k6 [  c/ w& f
                                    System.out.println("水仙花数:"+i);
    5 \6 Y/ t$ u5 s- v& T- b                        }
    9 i. G( _( g, C/ G" m                }
    9 P* x) L5 x* T        }& N" @7 b% K7 ^7 T
    }
    + |- _" ^9 C' ?  d; |2 o

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    ) r6 J% e! \$ @% }
    ; q' v4 l* W6 W) ximport java.util.Scanner;: O  v+ w, c0 B9 f. o
    /*
    0 T/ U- P% G% B% R9 m& v7 d * 计算1000以内的所有水仙花数。
    5 j$ p3 B) d, Y: O7 W$ Q7 b * 用户输入0到1000以内的某个数,& w2 f. S1 z# p* C- F' t
    * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),4 z0 K8 M* ?! o" i5 I
    * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27
    ) d9 k% e$ V0 A" D% w( T  Z */
    . g0 Z' a$ p! v: Jpublic class narcissus {9 h: ?' g( D5 @/ _
            public static void main(String[] args) {7 {3 \* T: X1 w
                    //计算水仙花的数量( a" W" V3 m% l+ U) p
                    Scanner in=new Scanner(System.in);3 D! }+ @+ Z- g9 i  K3 _# Q
                    System.out.println("请输入查找水仙花的范围:0~");* O; l; r0 \" {6 }4 z# C( r
                    int max=in.nextInt();
    5 n/ t; o5 j- b1 h                in.close();
    7 l! X+ h+ _5 T7 m                for(int n=3;n<=max;n++){
    ( N# [) k8 [! z! A% l9 \/ X                        //先判断n是否为水仙花数
    2 A% w4 ~! l& S                        int sum=0;" G; m8 G8 j# D+ c$ x0 w
                            for(int m=n;m>0;m/=10){
      W) ?+ E3 \2 @                                int v=m%10;
    - E8 e4 H$ r5 C7 w, {                                sum+=v*v*v;
    0 p: q" l5 A* Z, Y0 }% w* T                        }* W, w- _2 D- O0 S. c2 u- M1 [
                            if(n==sum){6 A7 ^4 W$ n  N) n
                                    System.out.print(n+" ");
    : R: }: N. ]# W+ n                        }
    # v0 ^. n( J; E( P% }                }3 ]& V) S9 a3 P
            }
    5 x+ U8 `0 l6 h, q4 X+ M. F2 i- e}
    3 S% v* c2 F' {  N8 H$ V

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {
      x3 A$ h' x4 s6 `5 r2 j        public static void main(String[] args) {
    # b4 X1 u  f: M3 ^* [                int x, y, z, a = 0, b = 0;1 t2 f5 q" C, n3 q8 G
                    for (x = 1; x < 10; x++) {/ [7 G6 J6 W4 e4 u# R( C
                            for (y = 0; y < 10; y++) {
    3 i/ e' `- V5 b3 I+ X6 ]                                for (z = 0; z < 10; z++) {1 N% i$ Y! ~0 L( U
                                            a = 100 * x + 10 * y + z;
    4 T; v* V. a, l1 B" D. j; q                                        b = x * x * x + y * y * y + z * z * z;2 b$ W# F: ^' f0 _9 @
                                            if (a == b) {
    : k; D6 y) s, g0 v                                                System.out.println(a);. f1 N. |% l0 c: K# [/ Q
                                            }
    - a! o  V0 A2 F( f* G( ~  L                                }! T& g+ m! N) n$ m3 Z$ \
                            }4 h, o) L. {4 S; I' `+ S+ z* G
                    }
    , Z- J- J9 W8 [: ]# i" B        }- N) D( A, D2 \# g8 q0 r- x
    }

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {/ K1 V5 ]% {" o/ ^7 e: I3 p* ~8 ]5 b
            public static void main(String[] args) {+ D# U* a$ K) i1 H
                    int x, y, z, a = 0, b = 0;
    9 O) W/ n. b# y. r6 a" T" s                for (x = 1; x < 10; x++) {# V6 [! U0 V' s- L# A
                            for (y = 0; y < 10; y++) {* d. z/ l* @, O: L
                                    for (z = 0; z < 10; z++) {4 w! d& o4 d3 X
                                            a = 100 * x + 10 * y + z;0 Y2 W6 K' _3 m
                                            b = x * x * x + y * y * y + z * z * z;. j: ?! ?6 |! t% X+ k% ?4 d% ]+ E- m
                                            if (a == b) {
    2 \; f  }) ^. D. m& J2 \* C. ~: ~                                                System.out.println(a);
    / q9 F/ [3 L% I                                        }
    ! W7 ^; H* h7 Q7 E                                }* \7 l. t) N! X# G/ ^) R. Y( J
                            }3 r7 m: c; Z% N# ^; r: K! n
                    }
    ) r& v4 t( m; M: p3 [$ M        }
    # h- Y/ L9 a/ k* I6 L* i" ~2 ~8 c}
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    QQ|小黑屋|手机版|Archiver|联系我们|JAVA中文站 ( 浙ICP备12034637  

    GMT+8, 2017-9-26 02:43 , Processed in 0.524361 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表