水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 3 +5 3 +3 3 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,
时间: 2023-10-23 17:09:14 浏览: 101
n)内的所有水仙花数。
以下是Python实现:
```python
def is_narcissistic_number(num):
"""
判断一个数是否为水仙花数
"""
n = len(str(num))
res = 0
temp = num
while temp > 0:
res += (temp % 10) ** n
temp //= 10
return res == num
def print_narcissistic_numbers(m, n):
"""
打印区间(m, n)内的所有水仙花数
"""
res = []
for i in range(m, n+1):
if is_narcissistic_number(i):
res.append(i)
return res
```
这里我们定义了两个函数,一个用于判断一个数是否为水仙花数,另一个用于打印区间内所有的水仙花数。其中,is_narcissistic_number函数的实现思路非常简单,就是按照水仙花数的定义,求出该数的每个数字的n次方之和,判断是否等于该数本身即可。而print_narcissistic_numbers函数则是遍历区间内的所有数,对每个数进行水仙花数的判断,如果是水仙花数,则将其加入结果列表中。最后返回结果列表即可。
我们可以通过以下代码来测试:
```python
print(print_narcissistic_numbers(100, 999))
```
输出结果为:[153, 370, 371, 407],符合水仙花数的定义。
阅读全文