编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓 的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
时间: 2024-02-17 13:01:48 浏览: 77
好的,这里提供一种递归实现的方法:
```python
def is_narcissistic(num):
"""
判断一个数是否为水仙花数
"""
if num < 100 or num > 999:
return False
a = num // 100 # 百位数
b = (num // 10) % 10 # 十位数
c = num % 10 # 个位数
return a**3 + b**3 + c**3 == num
def narcissistic_numbers(start, end):
"""
输出[start, end)之间的所有水仙花数
"""
if start >= end:
return
if is_narcissistic(start):
print(start)
narcissistic_numbers(start+1, end)
N = int(input("请输入一个正整数N(N大于等于100小于等于999): "))
narcissistic_numbers(100, N+1)
```
首先定义两个函数,一个用于判断一个数是否为水仙花数,另一个用于输出[start, end)之间的所有水仙花数。其中,`is_narcissistic` 函数判断一个数是否为水仙花数,`narcissistic_numbers` 函数使用递归实现输出[start, end)之间的所有水仙花数。最后输入一个正整数N,调用 `narcissistic_numbers` 函数输出100到N之间的所有水仙花数。
这种方法可能会有一定的性能开销,但是代码相对简洁易懂。
阅读全文