A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张卯 中级黑马   /  2012-4-9 21:41  /  2641 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
需求:打印出1~10000范围中所有的“水仙花数”,所谓“水仙花数”是指一个n位数(n>=3),其各位数字的n次幂之和等于该数字本身。
(例如:153是一个“水仙花数”,因为1^3 + 5^3 + 3^3 = 153)
*/


大家开动脑筋吧,不是很难的,不要百歌+谷度哦~

10 个回复

倒序浏览
public class Test{
        public static void main(String[] args){
               
                for(int i=100;i<1000;i++){
                        int n1,n2,n3 ;
                        int k = i ;
                        n1 = k/100 ;
                        n2 = (k/10)%10 ;
                        n3 = k%100 ;
                        if(k==(getCulb(n1)+getCulb(n2)+getCulb(n3))){
                                System.out.println(k) ;
                        }
                }
        }
        public static int getCulb(int n){
                return n*n*n ;
        }
}

这问题比较简单,刚刚学java的时候就做过了,哥们你看看吧,我没搞清你是拿出来考我们还是自己不懂呢?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
邓海涛 发表于 2012-4-9 21:50
public class Test{
        public static void main(String[] args){
               

正解,不过还有更好的方法哦~
呵呵,感觉挺好玩的,所以拿出来耍耍~
回复 使用道具 举报
恩,能分享下更好的方法吗?
回复 使用道具 举报
邓海涛 发表于 2012-4-9 21:58
恩,能分享下更好的方法吗?

哎,算了,也没什么人看帖,小范围交流吧~
  1. public class ShuiXianHua
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int i=1; i<=10000; i++)
  6.                 {
  7.                         int a = i/100;
  8.                         int b = i/10%10;
  9.                         int c = i%10;
  10.                         if(Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3)==i)
  11.                                 System.out.println(i+"是水仙花数");
  12.                 }
  13.         }
  14. }
复制代码
回复 使用道具 举报
哦,我明白了,呵呵,你使用了Math类啊,真是聪明!
回复 使用道具 举报
邓海涛 发表于 2012-4-9 22:19
哦,我明白了,呵呵,你使用了Math类啊,真是聪明!

过奖了,不是原创的,呵呵,别误会,本人还是菜鸟一个,互相学习~!
回复 使用道具 举报
呵呵,大家都是菜鸟啊,共同学习!
回复 使用道具 举报
回复 使用道具 举报
魏明明 发表于 2012-4-9 23:46

眼真尖!
回复 使用道具 举报
张卯 发表于 2012-4-9 23:47
眼真尖!

:lol 哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马