小白收藏 | 用Python实现水仙花数的计算

在这里插入图片描述
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。判断一个数是否为水仙花数,首先要获得该数在个位、十位、百位……上的数字,然后计算这些数字的N次方,并将它们加起来即可。
整体代码:
1# 方法一
2start = 101
3end = 999
4for i in range(start, end + 1):
5 # 计算百位上的数
6 bai = i // 100
7 # 计算十位、个位上的数
8 shi, ge = (i - bai * 100) // 10, i % 10
9 # 判断是否为水仙花数
10 if ge * * len(str(i)) + shi * * len(str(i)) + bai ** len(str(i)) == i:
11 print(i)

1# 方法二
2end = int(input(‘请输入最大范围:’))
3for i in range(1, end + 1):
4 # 计算数字i的长度
5 length = len(str(i))
6 sm = 0
7 temp = i
8 for j in range(length):
9 # 对于10求余等到个位上的数字,
10 # 然后计算length次方,并累加其总和
11 sm += (temp % 10) ** length
12 # 将目标数缩小10倍,下一步将会获取十位上的数字
13 # 依次类推,下一次获取百位、千位上的数
14 temp //= 10
15 # 判断是否为水仙花数
16 if sm == i:
17 print(i)
还有很多种方法可以计算水仙花数,大家可以多尝试不同的解法。
文章部分内容源于网络,联系侵删*
文章参考源于http://http.taiyangruanjian.com/news/59282.html

猜你喜欢

转载自blog.csdn.net/zhimaHTTP/article/details/112347021