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

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
    1 X& n5 C3 t! Q  `( n& Z! x1 }! m' I1 t$ |7 r
    要求:1、测试通过;$ m  C, ^% H- A8 o! W  e
          2、界面友好;; Z+ [: [; u. N& u0 Y* a( g! n( D
          3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {, n( T  v" x/ J/ }  H, N
            public static void main(String[] args) {
    / s0 Q; a; }8 n6 a( _3 ]0 |1 P  _2 x
                    for (int i = 1; i < 10; i++)
    : B/ `0 R; m' H- ]5 \                        for (int j = 1; j < 10; j++)5 B; d% s7 r3 O" v
                                    for (int k = 1; k < 10; k++)
    ( F/ e5 K. m( f! c& u* `4 S$ o                                        if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k)))2 x( V9 e3 {7 |7 U
                                                    System.out.println(i + "" + j + "" + k);' [9 H' `& w4 Y# l1 ]- X
            }0 h' g1 t' V9 q9 N2 O

    6 M. E( V& s' s2 b}* i3 r( a+ b* {" c

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;6 S9 g/ v# O8 }7 c( \, e/ H
    ( G$ ~& {( O7 s  n, M
    public class waterflowernumber {
    : H( `  p) W; V% \. v& o4 E6 Y, r* Z9 D* |$ B( ?
            public static void main(String[] args) {+ M4 q$ F" T  B9 d! k( d- Q
                    waterflowernumber d = new waterflowernumber();* h4 A/ d& m. ^" l6 f. c# o
                    d.printDaffodil();2 ~. N5 C; F; v8 U6 ?
            }# _  B, I" ^* W* f4 l  ~
            /*********
    8 h7 s4 ]4 @/ L9 j9 K) }  ]         * 打印100~1000之间的所有水仙花数. Y) A6 {0 b6 i" t" z
             */
    0 `& j7 T, _. S        public void printDaffodil(){1 ^7 ^$ K3 Z6 e5 l; Q
                    for(int i=1000;i<10000;i++){
    ( ?' `. C/ a, |- V( j& v                        /*if(isDaffodil(i)){* f5 L" l4 V( h, Z' L- C" J
                                    System.out.printf("%-5d",i);; N0 U' Y2 ?, J3 O1 ?
                            }*// z* B8 ?7 ]! m+ N, ]+ w
                            if(isDaffodil2(i,4)){
    ( y) P7 F) d# F! X9 t3 E) B8 |2 N                                System.out.printf("%-5d",i);
    : J: \8 L; S+ l2 J' y- M- i9 Z                        }
    5 f9 z* i; m; N! z) A                }) I6 Q; }- [& y, x( n6 g  }
            }9 y5 N6 l' ?: n3 g
            /*******************& A0 w7 t# }$ H8 I; c
             * 判断给定的数是否是水仙花数
    6 e8 x# M% `. G; Y/ X         * " @# A5 S! u. ~9 g3 m6 O- e: Z
             * @param data3 R, @3 T' E. G, o* Q
             * @return6 q/ b9 z4 W( i* t( I  f
             */
    3 _- f2 G+ W  a. ?4 D. `        public boolean isDaffodil(int data){. L: [2 |, Y5 f: R4 w" b
                    //做边界判断- }4 ^* j+ z: X+ G
                    if(data < 100){
    1 A2 S& M4 g- s: d* e                        System.err.println("参数不合法:"+ data);+ O; ^" X  W; X1 V* {3 m
                            return false;
    ( U( P! @7 _% E$ o. q) M                }8 i6 T# \( c" |9 n
                    //1.得到百位数
    * M* X  c% n& Z# h( b                int b = data / 100;
    , h) X# J" G! j, R9 o: }' F                //2.得到十位数
    ) B; J9 j# H& R5 `                int s = data % 100 / 10;
    ! b. d/ x4 [1 u5 V( d: s                //3.得到个位数) F& z: s' Q! f) u, V
                    int g = data % 10;" I5 f- q& H( T" L" K+ g# p
                    //4.做判断
    1 H2 m3 t& S4 k) H                if(Math.pow(b,3)7 r5 _- H5 O% ^2 m" @$ g# @- S+ e
                                    +Math.pow(s,3)
    : [: ^+ V# h8 p                                +Math.pow(g, 3) == data){* v. g" o+ k0 }( D1 }
                            return true;, Q* e# G4 B% G' E: c: V1 k
                    }else{
    3 k: [) `4 r. u9 o- h8 {                        return false;; A6 R# e- j* ]2 g  t1 L" ^7 M  x
                    }
    % a2 v+ D3 h  {0 ~. a$ K5 ~' V/ N, L        }% W: O; A3 V, z+ N) Q+ z
            // 23422, 5" R  W% I7 l  E7 z+ m+ ]0 s/ l
            public boolean isDaffodil2(int data,int n){
    ! C+ B1 k4 ~6 A                int result = 0; //保存各个位数的N次幂之和
    9 T2 z" I, Q9 u% u                final int temp = data; //保存data,以便后面进行比较# {$ _4 r+ {; P$ C) v4 s& a& A" ^3 P
                    for(int i=n-1;i>=0;i--){1 `" s' [7 u$ A+ |
                            int m = (int)(Math.pow(10,i));4 B& D7 T+ w2 A8 P- d, N6 B# z
                            //求出每一位
    - v. b# N& E7 [# w+ `& a                        int bit = data / m;2 ~! L9 C) E7 p4 r% D$ L( U2 a
                            //把数去掉最高位
    0 W6 ?3 O0 Z% f$ e8 T5 [                        data %= m;& ~7 q4 j& y, z
                            //要把每一位数的n次幂相加.
    8 C) ?5 F! |  l6 P                        result += Math.pow(bit, n);
    / q, ]& e, N7 ~$ C+ ?                }
    , a5 F) _9 g3 m, C                //比较
    ) c! p. Q; g( d0 h# b  |                if(result == temp){. g  A, W( M, U, I7 O" x
                            return true;
    % g9 |$ i' z: O. S5 U0 g                }else{; W. a: c/ L5 Z
                            return false;5 |+ g2 m5 l. K( v
                    }6 K, j; K) {& r5 D% _3 W0 `  y
            }
    ; L# @1 q6 b* u. R}

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢' }) n4 H' u- _1 K! J
    public class ShuiXianFlower {
    0 V: X9 z9 Y2 O+ \9 j1 _        public static void main(String[] args) {
    4 r" ?8 Q, M! F) }. W                //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,5 ?% k' v% I* Q- ~) A
                    //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "# N# |' z. d# Q# R7 m) a
                    result();' C' C  z6 C) P
            }
    - \1 t4 a6 ^1 ^
    - t$ g2 `% K' N+ @' R2 a' Z        private static void result() {
    6 ?/ U" ]3 `  X: ~6 X+ A                for(int i=100;i<1000;i++)9 o4 j+ b  J/ z, x/ t* e' l5 K
                    {
    $ @7 F# l8 V( X4 K/ K! V8 Z                        //求百位数:i/100 求十位数:i/10%10 求个位数:i%10  j  F0 b: I1 l- D' L
                            //如果相等 则输出" b6 k& Z  C  m
                            if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))5 [0 r6 f+ Z2 L. s
                            {5 M) e! J  }4 k6 u/ q  N$ ]# x
                                    System.out.println("水仙花数:"+i);6 @+ W8 X" c$ i% h, i
                            }* h% V. H  C8 M7 A$ c5 J
                    }
    , ^3 s  o6 e1 g, K. m        }) t3 v' Z* X7 o, P9 E2 A$ I
    }6 c' d9 e  S1 @

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    . m( L5 Y# U: Y- p
    / D' z) X) b% N  x1 S" R3 Zimport java.util.Scanner;
    0 U, {/ |  W3 t) B" F( E/*9 l* C' i8 |, K; l' `9 |9 P& G; e
    * 计算1000以内的所有水仙花数。; ?" T1 ?3 }2 t0 w& g% R
    * 用户输入0到1000以内的某个数,
    . @* B2 v1 h9 F4 I) y" f$ E * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 )," @3 r9 k; ~: {. Q( O1 a, `
    * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27
    2 I! j- Q4 b2 _' I0 m */
    # Q4 M' }: |$ Ipublic class narcissus {7 l4 x' z: N& r  ~- S2 Z+ q8 Z
            public static void main(String[] args) {
    ! l6 b4 T: w9 d5 W: i9 L2 x                //计算水仙花的数量2 m' }) a6 Y( w$ u5 y' n) x
                    Scanner in=new Scanner(System.in);
    5 f, I) l2 Q$ d  B, y. p                System.out.println("请输入查找水仙花的范围:0~");6 ]& ~0 ]7 j& y) ]/ R1 f
                    int max=in.nextInt();
    % d4 i" V- \2 G" r. c                in.close();
    " \- S) `5 Z& P, w8 T                for(int n=3;n<=max;n++){
    8 f! M& H3 U; J: M, b4 U                        //先判断n是否为水仙花数
    . f' y7 b3 t' [; G7 Y  J' y                        int sum=0;
    # D/ H$ }) C9 J; _4 E3 w                        for(int m=n;m>0;m/=10){
    , M8 y  }/ p$ l6 q                                int v=m%10;
    9 F+ C7 o1 X! J' |( ?                                sum+=v*v*v;
    9 z$ R/ u0 h/ P8 C0 C7 D& f                        }
    6 @% @) k7 o& s) H' @3 S                        if(n==sum){! ?; y( ~( ]. n7 n' `1 g' E
                                    System.out.print(n+" ");' n( ]: c0 d& |- u
                            }; }5 o* _) Z5 f4 b
                    }: ?! \0 d+ S* Z$ r% N1 [* R" m
            }
    ( }: h7 E4 k/ B- i* E$ T8 t}6 g# O5 _" P3 {* N

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {6 o7 n8 ]4 j' _. I4 o8 a
            public static void main(String[] args) {
    # z7 u3 Z4 N% K  H$ C2 X, C$ Z; H                int x, y, z, a = 0, b = 0;, i, {8 V9 C6 ~& y7 f0 o& U: o$ Y' A
                    for (x = 1; x < 10; x++) {* Z. F% S4 `# {, w7 g
                            for (y = 0; y < 10; y++) {
    ; I1 H4 l% ^! I$ z8 l4 L2 U, P                                for (z = 0; z < 10; z++) {
    ; ^- @9 P! ]! r* H                                        a = 100 * x + 10 * y + z;7 N2 {. b8 R5 J+ o: M1 Y- @
                                            b = x * x * x + y * y * y + z * z * z;, y% q# c3 ?+ h, N- s
                                            if (a == b) {$ U( H* U: c" z9 {* Z  T! M, p
                                                    System.out.println(a);: U3 l" e, A( i% y+ p5 g7 ]
                                            }
    7 {! v5 N. Y, g" Z                                }
    . S' [% ?6 J# Q8 }2 I                        }
    * x% m! q9 h* @  R1 a2 W                }
    ; L7 `- k2 h' `9 [, s        }
    + ^. _# l3 L- f; u& c% J3 J8 [}

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {* {9 L, Q3 J3 u) @( k
            public static void main(String[] args) {
    - t6 i" T# {# g0 e. r9 d                int x, y, z, a = 0, b = 0;
    4 C; n* m5 j3 c+ U1 j                for (x = 1; x < 10; x++) {
    6 q* o. c# S% p2 e3 q8 ^2 `6 M2 ?' q                        for (y = 0; y < 10; y++) {  T$ ^0 l" [: H
                                    for (z = 0; z < 10; z++) {' N) A6 M4 h& T6 `& A) C  h6 C. Z
                                            a = 100 * x + 10 * y + z;  K/ q, ]+ x! ?! @# X5 `; T
                                            b = x * x * x + y * y * y + z * z * z;
    ! c/ f/ B$ D$ }" T" D; T3 q! {                                        if (a == b) {
    3 m5 j3 U7 o! v) C) }                                                System.out.println(a);
    9 w! D, q- b3 w  \                                        }% k; E7 Z: P9 A3 j9 x) Q+ O$ D+ \
                                    }
    9 l9 g$ z3 z' B/ z5 E; S7 m3 N' V                        }  l, B& i8 @/ T( l& X5 {  o- C
                    }; d3 M+ g% K2 |! a; R2 J
            }
    1 N: U3 O1 y- {2 a}
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

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

    GMT+8, 2018-6-15 14:21 , Processed in 0.501048 second(s), 36 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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