python水仙花数
时间: 2025-05-31 17:56:31 浏览: 51
### 如何用Python计算水仙花数
以下是一段完整的 Python 代码示例,用于找出给定范围内的所有水仙花数:
```python
def find_armstrong_numbers(lower, upper):
armstrong_numbers = []
for num in range(lower, upper + 1):
order = len(str(num))
sum_of_powers = 0
temp = num
while temp > 0:
digit = temp % 10
sum_of_powers += digit ** order
temp //= 10
if sum_of_powers == num:
armstrong_numbers.append(num)
return armstrong_numbers
lower_bound = 1
upper_bound = 999
result = find_armstrong_numbers(lower_bound, upper_bound)
print(f"在范围 {lower_bound} 至 {upper_bound} 的水仙花数有:{result}")
```
此代码定义了一个函数 `find_armstrong_numbers` 来查找指定范围内所有的水仙花数。通过循环遍历每个数字,并利用其位数来判断是否满足条件[^1]。
另一种方法是简化版的三位数水仙花数求解方式如下所示:
```python
for number in range(100, 1000):
digits = list(map(int, str(number)))
if digits[0]**3 + digits[1]**3 + digits[2]**3 == number:
print(f"发现水仙花数: {number}")
```
这里采用列表解析的方式提取每位数值并进行三次方运算验证[^3]。
更通用的方法可以通过定义辅助函数完成任意长度的水仙花数检测:
```python
def is_armstrong(n):
s = str(n)
power = len(s)
total = sum([int(c)**power for c in s])
return n == total
start_range = 1
end_range = 999
armstrong_list = [i for i in range(start_range, end_range+1) if is_armstrong(i)]
print(f"从 {start_range} 到 {end_range}, 找到这些水仙花数:{armstrong_list}")
```
这段脚本先创建了测试单个整数是否属于阿姆斯壮数的功能模块is_armstrong() ,再结合列表推导式生成符合条件的结果集合[^4]。
#### 注意事项
- 上述三种算法均能有效识别特定区间中的全部水仙花数实例。
- 可依据实际需求调整搜索上下限参数值以适应不同场景下的应用场合。
阅读全文
相关推荐














