使用单重循环、三重循环两种不同的算法分别编写两个程序,输出所有水仙花数。要求:在一行上输出;首尾无其他符号;相邻水仙花数以逗号分隔;最后一个数后面无逗号;不能单独输出首元素或末元素。
时间: 2024-10-17 14:14:30 浏览: 40
首先,让我们理解一下什么是水仙花数。水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为\(1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153\)。
以下是使用单重循环和三重循环的方式分别寻找并打印水仙花数:
### 单重循环实现 (内嵌循环)
```python
for i in range(100, 1000): # 从100到999范围内的数字
digits = [int(d) for d in str(i)] # 将数字转换成列表获取每个位数
if len(digits) == 3 and sum(map(lambda x: x ** 3, digits)) == i:
print(i, end=', ' if i < 999 else '') # 输出当前数字,并加逗号,如果不是最后一位则加
```
### 三重循环实现 (逐位计算)
```python
start, end = 100, 999
result = ""
for num in range(start, end + 1):
hundreds = num // 100
tens = (num % 100) // 10
ones = num % 10
if hundreds ** 3 + tens ** 3 + ones ** 3 == num:
result += str(num) + ', ' if num != end else str(num) # 结果字符串拼接
print(result[:-2]) # 去掉末尾的逗号和空格
```
阅读全文