知方号

知方号

水仙花数的总结概括以及各种代码实现(最详细)<用函数求水仙花数量的公式>

水仙花数的总结概括以及各种代码实现(最详细)

生活中一些常用的规则 需要我们掌握,比如水仙花数,斐波纳契法则等

文章目录 水仙花数定义附:其他位数的自幂数名字 求取方法C实现C++ 实现Java 实现Python 实现

水仙花数

百度百科解释: 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

定义

水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。

附:其他位数的自幂数名字 两位自幂数:没有三位自幂数:水仙花数四位自幂数:四叶玫瑰数 四叶玫瑰数 Description 四叶玫瑰数是指四位数各位上的数字的四次方之和等于本身的数。 五位自幂数:五角星数 五角星数是指五位数各位上的数字的5次方之和等于本身的数 10000 - 99999 六位自幂数:六合数七位自幂数:北斗七星数八位自幂数:八仙数九位自幂数:九九重阳数十位自幂数:十全十美数

常见水仙花数

水仙花数又称阿姆斯特朗数。三位的水仙花数共有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: 472335975 9: 534494836 9: 912985153 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个。

求取方法

(非高精度) 以下为在各种编程语言中实现求取水仙花数的方法(非高精度)。

C实现 //方法一#include#include#includeint cube(const int n){ return n*n*n;}boolisNarcissistic(const int n){//判断是不是水仙花数 int hundreds=n/100; int tens=n/10-hundreds*10; int ones=n%10; return cube(hundreds)+cube(tens)+cube(ones)==n;}int main(void){ int i; for(i=100;i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。