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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© joyjio 中级黑马   /  2015-4-3 10:16  /  1212 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本人新手,如果哪位大神感觉我问的问题很幼稚,勿喷!我看刘意老师的视频,讲的打印水仙花数是三位数的,我上网搜了一下水仙花数好像不只是三位数,还有很多,到底哪个是正确的呢,如果这个题目就是让你打印水仙花数,应该怎么打印呢?那这个范围应该就不只是三位数以内了吧!

11 个回复

倒序浏览
水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身
回复 使用道具 举报
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

附:其他位数的自幂数名字

一位自幂数:独身数

两位自幂数:没有

三位自幂数:水仙花数

四位自幂数:四叶玫瑰数

五位自幂数:五角星数

六位自幂数:六合数

七位自幂数:北斗七星数

八位自幂数:八仙数

九位自幂数:九九重阳数

十位自幂数:十全十美数

常见水仙花数
水仙花数又称阿姆斯特朗数。

三位的水仙花数共有4个:153,370,371,407;四位的水仙花数共有3个:1634,8208,9474;

五位的水仙花数共有3个:54748,92727,93084;

六位的水仙花数只有1个:548834;

七位的水仙花数共有4个:1741725,4210818,9800817,9926315;

八位的水仙花数共有3个:24678050,24678051,88593477

……

……

使用高精度计算,可以得到超过int类型上限的水仙花数:

5:93084

5:92727

5:54748

6:548834

7:9800817

7:4210818

7:1741725

7:9926315

8:24678050

8:24678051

8:88593477

9:146511208

9:912985153

9:472335975

9:534494836

10:4679307774

11:32164049650

11:40028394225

11:42678290603

11:49388550606

11:32164049651

11:94204591914

11:44708635679

11:82693916578

14:28116440335967

16:4338281769391370

16:4338281769391371

17:21897142587612075

17:35641594208964132

17:35875699062250035

19:1517841543307505039

19:3289582984443187032

19:4929273885928088826

19:4498128791164624869

20:63105425988599693916

21:449177399146038697307

21:128468643043731391252

23:27907865009977052567814

23:35452590104031691935943

23:27879694893054074471405

23:21887696841122916288858

24:174088005938065293023722

24:188451485447897896036875

(为环保起见,24位以上的水仙花数略)

最大的水仙花数有39位。十进制自然数中的所有水仙花数共有88个.

回复 使用道具 举报
楼上大神,不解释
回复 使用道具 举报
dxf578939729 发表于 2015-4-3 10:28
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

附:其他位数的自幂数名字

非常感谢,那如果,写一个程序,打印水仙花数,这题的思路大概得怎么写呢?
回复 使用道具 举报
dxf578939729 发表于 2015-4-3 10:28
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

附:其他位数的自幂数名字

哥们!你牛
回复 使用道具 举报
1.依次对一个三位数的每一位数的平方求和,百位数可通过除100取整得到,十位数可通过除10取整得到  2.三位数中的最小数是101,最大数是999,所以水仙花数必然存在于101到999之间  
public class shuixianhuashu {   
static Boolean isSxh(int m){   
int a1,a2,a3;  
a1=m/100;
  a2=m%100/10;
  a3=m%10;  
if(m<3)    return false;  
  else if( (a1*a1*a1+a2*a2*a2+a3*a3*a3) == (a1*100+a2*10+a3) )   
return true;   else    return false;     
     public static void main(String[] args){  
System.out.println("1000以内的水仙花数:");  
shuixianhuashu s = new shuixianhuashu();  
for(int i=101;i<1000;i++)   if(s.isSxh(i))  
  System.out.print(i+"\t");   } }  
回复 使用道具 举报
多少位都可以
回复 使用道具 举报
让你求太复杂的不好上手,简单的先会了 后面的也不难了
回复 使用道具 举报
今天考试就考这个了
回复 使用道具 举报
写的话判断一个数。N位,它每位的N次方之和等于这个数本身。就OK了
回复 使用道具 举报
楼上好牛!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马