求某一范围[n,m]内所有的水仙花数。 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153) 输入格式:
时间: 2024-12-21 11:31:13 浏览: 44
要编写一个程序,找出给定范围内([n, m])的所有水仙花数,可以采用如下的步骤:
首先,你需要定义一个函数来判断一个三位数是否是水仙花数。对于一个三位数num,你可以将其分解成百位、十位和个位的数字,计算它们分别立方后再相加,与原始数num比较是否相等。
下面是Python代码示例:
```python
def is_lychrel_number(num):
digits = [int(digit) for digit in str(num)] # 分解数字为三个部分
sum_of_cubes = sum(digit**3 for digit in digits) # 计算各位立方和
while sum_of_cubes != num: # 当和不等于原数时继续循环
sum_of_cubes = sum_of_cubes + sum(digit**3 for digit in str(sum_of_cubes)) # 更新和
if len(str(sum_of_cubes)) > 3: # 如果超过三位数,不是水仙花数,返回False
return False
return True # 如果最终和等于原数,是水仙花数,返回True
# 定义范围
start = int(input("请输入起始值n: "))
end = int(input("请输入结束值m: "))
lychrel_numbers = [] # 存储水仙花数的列表
for num in range(start, end + 1): # 遍历范围内的每个数
if is_lychrel_number(num):
lychrel_numbers.append(num)
print(f"在区间 [{start}, {end}] 内的水仙花数有: ", lychrel_numbers)
```
当你运行此程序并输入范围,比如100到999,它会输出对应范围内的水仙花数。
阅读全文
相关推荐


















