c语言设计程序计算水仙花数,C语言水仙花数算法

打印出所有的“水仙花数”,

a4c26d1e5885305701be709a3d33442f.png

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如: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++)

{

a4c26d1e5885305701be709a3d33442f.png

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位。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值