编写python程序,输出所有"水仙花数",且输出在一行,数据间用逗号相隔。所谓"水仙花数",指一个三位数等于其各位数字的立方和
时间: 2023-05-29 20:06:34 浏览: 101
的和。例如,153是一个"水仙花数",因为153=1^3+5^3+3^3。
代码如下:
```python
for i in range(100, 1000):
n = str(i)
sum = 0
for j in n:
sum += int(j)**3
if sum == i:
print(i, end=",")
```
输出结果为:
```
153,370,371,407,
```
相关问题
python输出3位数的水仙花数。编写程序,输出100-1000之间的水仙花数。所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。 (格式提示:每行输出一个水仙花数)
好的,下面是Python程序的实现:
```python
for num in range(100, 1000):
# 计算各位数字的立方和
sum = 0
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** 3
temp //= 10
# 判断是否为水仙花数
if num == sum:
print(num)
```
程序解释:
1.使用`for`循环遍历100到1000之间的每一个数字。
2.使用`while`循环计算每个数字的各位数字的立方和。
3.判断是否为水仙花数,如果是,则输出该数字。
输出结果:
```
153
370
371
407
```
使用单重循环、三重循环两种不同的算法分别编写两个程序,输出所有水仙花数。要求:在一行上输出;首尾无其他符号;相邻水仙花数以逗号分隔;最后一个数后面无逗号;不能单独输出首元素或末元素。
首先,让我们理解一下什么是水仙花数。水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,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]) # 去掉末尾的逗号和空格
```
阅读全文