编写函数求100~999之间的所有水仙花数。所谓水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。
时间: 2024-05-03 18:20:48 浏览: 91
下面是对应的 Python 代码实现:
```python
def is_narcissistic_number(num):
"""
判断一个数是否为水仙花数
"""
digits = [int(d) for d in str(num)]
sum_of_cubes = sum([d**3 for d in digits])
return sum_of_cubes == num
def find_narcissistic_numbers():
"""
找出100~999之间的所有水仙花数
"""
narcissistic_numbers = []
for num in range(100, 1000):
if is_narcissistic_number(num):
narcissistic_numbers.append(num)
return narcissistic_numbers
print(find_narcissistic_numbers()) # 输出 [153, 370, 371, 407]
```
补充说明:这段代码实现了两个函数,一个用来判断一个数是否为水仙花数,一个用来找出100~999之间的所有水仙花数。其中,计算一个数每个位上的数字的3次幂之和可以使用 Python 中的列表推导式来简化代码。
相关问题
用Python编写函数求100~999之间的所有水仙花数。所谓水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。
当然可以,我们可以创建一个名为`find_water_lilies()`的函数,遍历100到999的所有整数,检查它们是否满足水仙花数的条件。下面是相应的Python代码:
```python
def is_perfect_number(num):
# 对于3位数,百位、十位和个位分别是num // 100, num // 10 % 10, 和 num % 10
digits = [int(digit) for digit in str(num)]
return sum(map(lambda x: x ** 3, digits)) == num
def find_water_lilies():
water_lilies = []
for num in range(100, 1000):
if is_perfect_number(num):
water_lilies.append(num)
return water_lilies
water_lily_numbers = find_water_lilies()
print("100至999之间的水仙花数有:")
for number in water_lily_numbers:
print(number)
用python编写函数求100~999之间的所有水仙花数。所谓水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。
def narcissistic_number():
res = []
for i in range(100, 1000):
num = str(i)
sum = 0
for j in num:
sum += int(j) ** 3
if sum == i:
res.append(i)
return res
print(narcissistic_number())
阅读全文