黑马程序员技术交流社区

标题: 请教关于水仙花数的问题! [打印本页]

作者: joyjio    时间: 2015-4-3 10:16
标题: 请教关于水仙花数的问题!
本人新手,如果哪位大神感觉我问的问题很幼稚,勿喷!我看刘意老师的视频,讲的打印水仙花数是三位数的,我上网搜了一下水仙花数好像不只是三位数,还有很多,到底哪个是正确的呢,如果这个题目就是让你打印水仙花数,应该怎么打印呢?那这个范围应该就不只是三位数以内了吧!
作者: dxf578939729    时间: 2015-4-3 10:26
水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身
作者: dxf578939729    时间: 2015-4-3 10:28
水仙花数只是自幂数的一种,严格来说三位数的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个.


作者: longlongint    时间: 2015-4-3 10:48
楼上大神,不解释
作者: joyjio    时间: 2015-4-4 13:44
dxf578939729 发表于 2015-4-3 10:28
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

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

非常感谢,那如果,写一个程序,打印水仙花数,这题的思路大概得怎么写呢?
作者: tubao1991    时间: 2015-4-4 19:17
dxf578939729 发表于 2015-4-3 10:28
水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。

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

哥们!你牛
作者: dxf578939729    时间: 2015-4-7 13:56
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");   } }  
作者: poppy    时间: 2015-4-7 21:53
多少位都可以
作者: wenhb    时间: 2015-4-7 22:20
让你求太复杂的不好上手,简单的先会了 后面的也不难了
作者: 愤怒的猪    时间: 2015-4-7 22:33
今天考试就考这个了
作者: luoyu1530    时间: 2015-4-7 22:36
写的话判断一个数。N位,它每位的N次方之和等于这个数本身。就OK了
作者: 逸风    时间: 2015-4-10 12:22
楼上好牛!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2