找出x以内所有水仙花数 python
时间: 2025-03-20 22:19:36 浏览: 53
### Python 实现求解指定范围内的水仙花数
要计算 `x` 以内的所有水仙花数,可以扩展上述代码逻辑。以下是完整的解决方案:
#### 方法描述
水仙花数的定义是一个 n 位数,其各位数字的 n 次方之和等于该数本身。因此,在给定范围内(如 `[1, x]`),可以通过以下步骤找到符合条件的水仙花数:
1. 遍历从 `1` 到 `x` 的所有整数。
2. 对于每个数,提取其各个位上的数字。
3. 计算这些数字的对应次幂之和。
4. 若此和等于原始数值,则判定为水仙花数。
下面是基于以上思路编写的通用 Python 程序[^5]:
```python
def find_armstrong_numbers(limit):
armstrong_numbers = []
for number in range(1, limit + 1):
digits = list(map(int, str(number))) # 获取每位数字
power_sum = sum(digit ** len(digits) for digit in digits) # 各位数字的n次幂之和
if power_sum == number: # 判断是否满足条件
armstrong_numbers.append(number)
return armstrong_numbers
# 输入上限值
x = int(input("请输入一个正整数作为上限:"))
result = find_armstrong_numbers(x)
print(f"{x}以内的所有水仙花数是:{result}")
```
#### 解释
- 使用函数封装逻辑以便重用。
- 动态调整幂指数为当前数字的长度,从而支持任意位数的水仙花数检测。
- 用户输入变量 `x` 来设定查找范围的最大边界。
通过运行这段脚本,能够高效地找出小于或等于用户自定义参数 `x` 的全部水仙花数[^6]。
#### 示例输出
假设用户输入 `x=10000`,则可能得到如下结果:
```plaintext
请输入一个正整数作为上限:10000
10000以内的所有水仙花数是:[1, 2, 3, ..., 8208, 9474]
```
---
阅读全文
相关推荐


















