打印出所有的“水仙花数”,
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.程序源代码:
main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",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: 35875699062250035 17:
21897142587612075 19: 3289582984443187032 19:
4929273885928088826 19: 4498128791164624869 20:
63105425988599693916 21: 449177399146038697307 21:
128468643043731391252 23: 27907865009977052567814 23:
35452590104031691935943 23: 27879694893054074471405 23:
21887696841122916288858 24: 17408800593806529302372224:
188451485447897896036875(为环保起见,24位以上的水仙花数略) 理论上,最大的水仙花数不超过34位。