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

JAVA中文站

 找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

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

    [LV.7]常住居民III

    发表于 2012-9-13 09:46:32 | 显示全部楼层 |阅读模式
    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。5 p4 t" [' v3 }1 ^" }3 ]. k
    ( n  r% s5 \6 ]% M! W
    要求:1、测试通过;
    0 p4 q  V; u! E" C& _      2、界面友好;
    ' o. ^9 E  x5 n$ M; L3 O- j      3、有详细的注释;

    该用户从未签到

    发表于 2012-9-14 16:47:30 | 显示全部楼层
    public class Narcissus {
    ) \) `6 i3 O/ `7 e/ m% S        public static void main(String[] args) {
    2 I2 }* a2 w! H1 B) _# E) B
    - l% W) H* [" j0 S+ Z, J4 O- g, V                for (int i = 1; i < 10; i++)
    3 J8 v4 U( _+ V  e                        for (int j = 1; j < 10; j++)4 K4 l6 k! k0 m/ Z6 C! A! q6 b
                                    for (int k = 1; k < 10; k++)
    6 @; J8 ~8 k5 f; T                                        if ((i * 100 + j * 10 + k) == ((i * i * i) + (j * j * j) + (k * k * k))): f$ T$ f+ \4 G+ C2 u
                                                    System.out.println(i + "" + j + "" + k);
    ' M: N  Z- ?- E. }        }
    ' \3 B; A, B- g: `1 Y, b
    - l. k4 H5 `- V! X; R( w. @$ p7 F}) l' X. H+ B* `- o" p* \

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2012-9-23 09:57:15 | 显示全部楼层
    package com.corejava.test;
    0 @8 D( l1 B; T8 k2 m7 w$ p5 O6 J; v+ S7 D. d2 C- w
    public class waterflowernumber {
    / C& Q- M- e) @5 X1 N5 X6 p7 q. O* e/ h  U" Y( t/ m! G  J$ B* ^  `$ N
            public static void main(String[] args) {  X- U/ m7 a7 H& \+ c" R' L
                    waterflowernumber d = new waterflowernumber();
    1 i1 _/ l$ K" E& |& V; S' D# D                d.printDaffodil();1 i* G0 R% V4 k" c# l) h
            }
    5 M( p* V. h7 M4 a- [, I  G& o        /*********
    , a0 }" B2 k5 X( o% z0 K         * 打印100~1000之间的所有水仙花数8 T2 k: Z" a6 f( d8 k
             */
    1 V# [9 {+ A' X; H) U7 e$ z        public void printDaffodil(){
    2 h" h2 ]$ L2 c$ N                for(int i=1000;i<10000;i++){
    1 D% D6 Q, |  q, h- b3 X                        /*if(isDaffodil(i)){- f1 D4 M7 h# h5 y& a# B; C
                                    System.out.printf("%-5d",i);5 T$ }9 a2 I' j5 d- {" g
                            }*/* W' Y" L% i8 W0 M8 G% B$ q' i' _
                            if(isDaffodil2(i,4)){
    $ d+ q0 E* z# _" ]) t$ W2 u4 @+ ?                                System.out.printf("%-5d",i);8 g) S3 g! v( u- }4 b8 u- n7 a* V5 ^8 `
                            }
    $ d/ Z3 B' Q. D) o+ d2 a/ ^                }
    0 Y6 i/ K9 F6 f        }
    9 _9 o' Q" K4 y        /*******************3 i) Y( M( ]" Y9 h5 T' Z% W: K
             * 判断给定的数是否是水仙花数5 n- I0 F! {& ?9 e$ t3 G
             * & p; T- b4 T  t0 G1 `% Y
             * @param data
    , k! P: [* E/ y         * @return
    7 K) v( C! a7 m* F7 i( j8 {         */
    1 i$ J' @4 z" h        public boolean isDaffodil(int data){
    # S9 t2 N  ]( e9 h$ [  H( o; J                //做边界判断
    ( H% w3 w4 s& w9 w' h: C                if(data < 100){4 V+ R7 W- G: C8 m$ j2 j& C+ l+ Z
                            System.err.println("参数不合法:"+ data);' r% J$ z! R2 i; P& v1 n
                            return false;
    8 G! l9 i' j5 W0 h5 \8 c; g5 l0 U. }/ i                }+ w2 P0 o3 t+ f7 v+ w! l( n
                    //1.得到百位数" p* w: X2 y$ ?) j8 W. ?6 D
                    int b = data / 100;4 @: J  @& E% N8 U5 D. G* W5 k
                    //2.得到十位数& c' V; ?% e$ U+ j* j% {
                    int s = data % 100 / 10;4 }% w# s7 B) X% f, b0 X
                    //3.得到个位数# [- j5 `2 t6 M6 w3 [8 X
                    int g = data % 10;
    4 q5 Y8 h* s' l3 b9 Q                //4.做判断! S( C7 V' A# y. n8 Z
                    if(Math.pow(b,3)" z# M$ R, O8 y) Z/ u' }
                                    +Math.pow(s,3)
    0 }: N; \9 [' U9 N2 X% }9 B% g4 B9 ?                                +Math.pow(g, 3) == data){
    9 U6 ?$ {" U. Q$ ]/ I: X0 T' N7 d& x                        return true;
      h# f6 m. u+ P, A7 g1 \                }else{
    , u( Y1 b# x+ x9 }4 M/ W                        return false;6 x1 I% ^0 _$ l# V6 d
                    }1 Q" Q+ y0 [2 ~* G$ }0 v! i; p9 Z  k
            }" J9 i" z* e! t- z: J$ S3 L
            // 23422, 5
    ; N1 m2 H3 U& I3 F( E        public boolean isDaffodil2(int data,int n){
    * X3 g1 [( c; Q* }% o) O' R                int result = 0; //保存各个位数的N次幂之和( u3 M/ D' z  j4 T  P- v
                    final int temp = data; //保存data,以便后面进行比较# A) }. @  Z8 o" K$ |" L0 N* \
                    for(int i=n-1;i>=0;i--){
    ; {4 L5 S3 l8 W) ]. V3 t                        int m = (int)(Math.pow(10,i));& ]5 o- Z% N7 R& \+ I
                            //求出每一位
    / v. z5 h- Q7 C9 U5 {2 ~0 i# i                        int bit = data / m;
    / v: E0 b$ V; ^  @$ K; M4 _                        //把数去掉最高位2 e2 H4 ?/ w4 t) B* ]0 R3 Y
                            data %= m;, p4 k$ j9 B8 n) [! \0 h' |; z
                            //要把每一位数的n次幂相加.7 \/ t0 e3 A! [) l) b; y
                            result += Math.pow(bit, n);, L. j8 a# B) m4 ^, E& o
                    }" ]  o) X/ |! S4 h6 t) f
                    //比较
    $ h: ?0 N) q5 p) \                if(result == temp){
    2 B, n" x1 @) {; j: A                        return true;
    ; e$ C  v; T# w$ w# U' w" E& b                }else{
    " m8 H! E' x$ i: [+ `' J3 O                        return false;
    ( k  v; i4 \% D' b# |% c% G                }% Q0 r( v7 `( k* p
            }
    1 F. g7 u* m1 a  i% L7 x4 S}

    该用户从未签到

    发表于 2014-7-10 21:58:11 | 显示全部楼层
    我是新手,这是我的思路,应该是最简单的思路!谢谢4 r) b3 W: i2 p4 Y" S+ a
    public class ShuiXianFlower {3 Z3 T; \9 q7 }: d
            public static void main(String[] args) {2 H' c7 [7 E& ?
                    //题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,
    0 h) y4 n" C. P# T4 o% v- W: l  R4 w. F                //其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 "
    . h; A9 Q; D0 ?& [                result();
    * S% B8 {8 W: u8 c        }8 a5 }/ @2 Q7 W4 {; T  A% z  g

      j9 u* G& y4 F! b        private static void result() {
    3 _0 \$ D4 f" w' T  N7 l                for(int i=100;i<1000;i++)
    - ]) u/ z% l5 @. ]4 Q3 J8 b                {
    - [0 a2 d) n) J3 v                        //求百位数:i/100 求十位数:i/10%10 求个位数:i%10
    , E9 Y* _! j9 k2 s- T$ v                        //如果相等 则输出
    9 T& W5 l: y' `6 D0 O4 o# m                        if(i==((Math.pow(i/100,3))+(Math.pow(i/10%10,3))+(Math.pow(i%10, 3))))
    + c* ~# a) P( t5 j                        {3 W0 N0 c+ D! `8 A  m$ G. l: o! Q
                                    System.out.println("水仙花数:"+i);' l. c) K: _- }& C
                            }
    6 r  `% r) W" U& T                }+ V% y: O: j- i  g( y
            }
    & R  f0 I2 v7 t' o! v: Y}
    + a& P2 n# U! I1 O) g/ n+ F+ e0 v' U) E6 p

    该用户从未签到

    发表于 2014-7-11 16:25:27 | 显示全部楼层
    package For;
    ( |# U) Z: ]5 F: z
    3 _& J' U) F( iimport java.util.Scanner;4 S: G! g* U% t# n" q
    /*
    4 N' X6 [/ H8 w  G. h2 q * 计算1000以内的所有水仙花数。' M9 E, Q! l4 W6 Y
    * 用户输入0到1000以内的某个数,
    2 s4 X8 K; A& L; L * 系统输出这个范围内的所有水仙花数,水仙花数是指一个 n 位数 ( n≥3 ),5 C1 Y( {% r7 ^: D; Q
    * 它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)。=1+125+27
    : Z' W, r0 R" V, B6 C! |# c */7 Z* m4 c) e! r: S+ J3 k$ D
    public class narcissus {5 C; P' d: F/ _5 W  C
            public static void main(String[] args) {
    - S* {/ L5 h9 J% \                //计算水仙花的数量
    # l/ p6 Y) g+ B) \0 _6 }( b                Scanner in=new Scanner(System.in);% |7 w- t0 [7 p7 h
                    System.out.println("请输入查找水仙花的范围:0~");9 Z* o4 Q" `$ C3 d+ d! \, t# x$ O
                    int max=in.nextInt();
    ; H; P6 E. r: c1 v* Q1 p: M  \: T9 b                in.close();3 N  i2 r2 n. Q3 v! T
                    for(int n=3;n<=max;n++){
    " M: f- l* s% S0 Y5 B) r2 i                        //先判断n是否为水仙花数$ H$ P9 M& @  n5 t8 f; a- O" g! q: [
                            int sum=0;
    2 ^" m2 ]0 [. h+ o! f# i                        for(int m=n;m>0;m/=10){
    ' x5 p- P% \+ E0 C                                int v=m%10;
    4 h) B' U- w+ D* j                                sum+=v*v*v;- @1 J9 Z- x' W: v- L6 W" c3 s
                            }
    0 z  J2 K- ?& E% N                        if(n==sum){: @0 ~8 |* }  k  l" @5 L: K
                                    System.out.print(n+" ");: O8 l& c% }' t) j/ v! ]
                            }
    3 i: y/ I" I2 U                }$ n6 `3 H2 w; ^9 p9 i3 C2 ]) [
            }
    ! I) k- @" G) v5 I}0 Y, \. }" W2 n1 [% H# F

    该用户从未签到

    发表于 2015-1-26 11:18:28 | 显示全部楼层
    public class test {
    : t; h; f# L, ]# J$ v        public static void main(String[] args) {
    : h% t7 h1 W" p/ y9 L6 b                int x, y, z, a = 0, b = 0;. u7 g! X( z& E; q
                    for (x = 1; x < 10; x++) {3 B7 d% P  x( }0 \7 a
                            for (y = 0; y < 10; y++) {9 A; {0 E: u  P- @" o; M
                                    for (z = 0; z < 10; z++) {$ _+ {1 {( V+ E) J. a
                                            a = 100 * x + 10 * y + z;
    ( l4 F3 Q1 ]6 ~* b* @                                        b = x * x * x + y * y * y + z * z * z;
    7 U0 J- t  G6 \/ I, @/ L( m5 Y  H* j                                        if (a == b) {
    0 t7 Y! g1 G) R* L$ l. n                                                System.out.println(a);
    % Q7 B. u: L8 i" q                                        }
    8 k6 W9 S. l! E- M2 J0 |" \                                }2 I- n1 G, L$ S! b8 B- }
                            }
    & Y2 K2 i- M4 O: x( \6 }8 ^+ k+ i                }
    9 A0 _' R+ H; j; T4 [        }
    , Z+ H3 X  J  H9 Z! y5 k}

    该用户从未签到

    发表于 2015-1-26 11:21:06 | 显示全部楼层
    public class test {
      S: Q% K5 T) |" b1 f* X# N        public static void main(String[] args) {
    + e1 \; i! Y2 F2 O# {                int x, y, z, a = 0, b = 0;/ j* x$ ]7 Z3 r0 X
                    for (x = 1; x < 10; x++) {: h% O& Y" l# O& z/ Y
                            for (y = 0; y < 10; y++) {
    ' H8 g/ }( Q2 T                                for (z = 0; z < 10; z++) {: P% U) B1 I2 H( ?; }. H: V
                                            a = 100 * x + 10 * y + z;( T3 ~, z' F2 i. J
                                            b = x * x * x + y * y * y + z * z * z;
    ; E+ I. Q# Y5 ~' O, x: [3 {                                        if (a == b) {
      C7 H. [. e. x7 s! @2 ^8 W                                                System.out.println(a);
    . V4 J9 v5 b0 z: w$ [/ S6 l                                        }
    7 c( x" I  j9 _; f                                }$ W( x& X2 p! m  U) k, l
                            }
    , O( |6 s/ U! V                }
    ; n0 t. s  J  t2 N, B  p        }1 j6 k& g& \" k7 o5 O0 \1 [
    }
    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

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

    GMT+8, 2018-4-10 22:11 , Processed in 0.490530 second(s), 36 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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