用Python算出n位数的水仙花数
时间: 2024-02-16 08:36:03 浏览: 70
水仙花数也叫自幂数,是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。
比如说,153是一个三位数的水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
以下是用 Python 实现求 n 位数的水仙花数的代码:
```python
def narcissistic_number(n):
start = 10**(n-1)
end = 10**n
result = []
for i in range(start, end):
sum = 0
temp = i
while temp > 0:
digit = temp % 10
sum += digit**n
temp //= 10
if sum == i:
result.append(i)
return result
```
这个函数的参数是 n,表示要求 n 位数的水仙花数。函数首先计算出 n 位数的取值范围,从 $10^{n-1}$ 到 $10^n-1$,然后循环这个范围内的每个数,计算每个位上的数字的 n 次幂之和是否等于这个数本身,如果是,则把这个数添加到结果列表中。最后函数返回结果列表。
你可以调用这个函数来求任意位数的水仙花数,比如:
```python
print(narcissistic_number(3)) # 输出 [153, 370, 371, 407]
print(narcissistic_number(4)) # 输出 [1634, 8208, 9474]
print(narcissistic_number(5)) # 输出 [54748, 92727, 93084, 548834]
```
阅读全文