水仙花数(Narcissistic number)是指一个n位正整数,其各位数字的n次幂之和等于该数本身。例如,153是一个3位的水仙花数,因为:1^3 + 5^3 + 3^3 = 153。在Python中,你可以编写一个简单的脚本来找到所有指定位数的水仙花数。
以下是一个寻找所有三位水仙花数的Python脚本示例:
```python
# 寻找所有的三位水仙花数
for num in range(100, 1000): # 三位水仙花数的范围是从100到999
sum_of_powers = 0
digits = [int(i) for i in str(num)] # 将数字转换为数字列表
n = len(digits) # 获取数字的位数
# 计算各位数字的n次幂之和
for digit in digits:
sum_of_powers += digit ** n
# 检查是否为水仙花数
if num == sum_of_powers:
print(num)
```
如果你想要找到所有小于某个数的所有水仙花数,你可以修改上面的脚本,使其不限制数字的范围:
```python
def is_narcissistic_number(num):
num_str = str(num)
n = len(num_str)
sum_of_powers = sum(int(digit) ** n for digit in num_str)
return num == sum_of_powers
# 寻找并打印所有水仙花数
print("所有水仙花数:")
for num in range(1, 10000): # 可以修改这个范围来寻找更多或更少的水仙花数
if is_narcissistic_number(num):
print(num)
```
这个脚本定义了一个函数`is_narcissistic_number`来检查一个数是否是水仙花数,并通过遍历指定范围内的所有数字来找到所有的水仙花数。通过调整`range`函数的参数,你可以找到任意位数的水仙花数。例如,如果你想要找到所有四位的水仙花数,可以将`range(1, 10000)`更改为`range(10000, 100000)`。