一个三位的十进制整数,如果它的三个数位的数字立方和等于这个数的数值,则称它为一个"水仙数"。编写程序,计算出某一范围内的所有"水仙数"。从控制台输入两个整数(以空格分割),分别表示数据范围的下限m和上限n,且满足0<=m<=n<=10000。
时间: 2024-10-14 17:06:52 浏览: 101
C语言编程题精选
5星 · 资源好评率100%
水仙数是一个有趣的数学概念,在编程中可以利用循环和条件判断来找出给定范围内符合条件的数。以下是Python语言的一个简单示例程序,用于计算指定范围内的水仙数:
```python
def is_lychrel(num):
# 将数字转换为字符串便于操作
str_num = str(num)
# 遍历最大5次,因为3次立方和最多能超过原数
for _ in range(5):
# 计算每个位置的数字立方并相加
sum_of_cubes = int(str_num[0]) ** 3 + int(str_num[1]) ** 3 + int(str_num[2]) ** 3
# 更新数字
num = abs(num - sum_of_cubes)
# 如果已经变成0或者等于原来的数,退出循环
if num == 0 or num == str_num:
return False
# 如果经过5次迭代都没有变成0,那么num就是水仙数
return True
# 输入范围的下限m和上限n
m, n = map(int, input("请输入数据范围的下限(m)和上限(n),以空格分隔:").split())
lychrels = []
# 检查并收集范围内的水仙数
for num in range(m, n + 1):
if is_lychrel(num):
lychrels.append(num)
# 打印结果
print(f"{m}到{n}之间的水仙数有:{lychrels}")
阅读全文