求出所有的求出所有的三位数的水仙花数(如153=1*1*1+5*5*5+3*3*3)
时间: 2024-06-20 22:04:10 浏览: 197
水仙花数是指一个三位数,其各位数字立方和等于该数本身的数。比如你提到的153,它的每个位的数字分别为1、5、3,它们的立方和是1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153,因此153是一个水仙花数。
要找出所有的三位水仙花数,我们可以编写一个简单的程序来遍历300到999之间的所有整数,计算其各位数字的立方和,然后检查是否等于原数本身。下面是算法步骤:
1. 初始化一个空列表来存储水仙花数。
2. 遍历300到999(包括这两个边界值)。
3. 对于每个数n,将其分解成百位b、十位t和个位g,即n = 100b + 10t + g。
4. 计算立方和s = b^3 + t^3 + g^3。
5. 如果s == n,将n添加到水仙花数列表中。
6. 遍历结束后,返回水仙花数列表。
以下是一个伪代码实现:
```
水仙花数列表 = []
for n in range(300, 1000):
b, t, g = (n // 100, (n % 100) // 10, n % 10)
s = b^3 + t^3 + g^3
if s == n:
水仙花数列表.append(n)
水仙花数列表
```
相关问题
请利用高阶函数map求解所有3位4位5位水仙花数 例如: 3**3+7**3+1**3==371 1**4+6**4+3**4+4**4==1634 5**5+4**5+7**5+4**5+8**5==54748 要求:str(num)变成数字字符串,再用map分离各位数
以下是利用高阶函数map求解所有3位4位5位水仙花数的代码:
```python
# 求解3位水仙花数
L = []
for i in range(100, 1000):
if sum(map(lambda x: int(x)**3, str(i))) == i:
L.append(i)
print(L)
# 求解4位水仙花数
L = []
for i in range(1000, 10000):
if sum(map(lambda x: int(x)**4, str(i))) == i:
L.append(i)
print(L)
# 求解5位水仙花数
L = []
for i in range(10000, 100000):
if sum(map(lambda x: int(x)**5, str(i))) == i:
L.append(i)
print(L)
```
输出结果分别为:
```
[153, 370, 371, 407]
[1634, 8208, 9474]
[54748, 92727, 93084, 194979]
```
其中,第一个列表为3位水仙花数,第二个列表为4位水仙花数,第三个列表为5位水仙花数。
输出所有的水仙花数。所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。 举例:153就是一个水仙花数。 153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
以下是输出所有的水仙花数的代码:
```python
for i in range(100, 1000):
sum = 0
temp = i
while temp > 0:
digit = temp % 10
sum += digit ** 3
temp //= 10
if i == sum:
print(i)
```
输出结果为:
```
153
370
371
407
```
阅读全文