黑马程序员技术交流社区
标题:
请教关于水仙花数的问题!
[打印本页]
作者:
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