1.使用单重循环、三重循环两种不同的算法分别编写两个程序,输出所有水仙花数。要求:在一行上输出;首尾无其他符号;相邻水仙花数以逗号分隔;最后一个数后面无逗号;不能单独输出首元素或末元素。
时间: 2024-10-19 13:02:33 浏览: 77
当然可以。水仙花数是指一个三位数,其各位数字立方和等于该数本身。比如153,因为1^3 + 5^3 + 3^3 = 153。下面是使用Python编写的单重循环和三重循环找出并输出所有水仙花数的例子:
**单重循环实现:**
```python
start = 100
end = 999
# 单重循环遍历所有三位数
for num in range(start, end + 1):
digits = [int(d) for d in str(num)]
if digits[0]**3 + digits[1]**3 + digits[2]**3 == num:
print(num, end=', ' if num != end else '')
```
**三重循环实现:**
```python
for n in range(100): # 遍历百位
for ten in range(10): # 遍历十位
ones = n * 100 + ten * 10 # 计算当前三位数
for one in range(10): # 遍历个位
if ones ** 3 == ones * (n * 1000 + ten * 100 + one):
print(ones, end=', ' if ones != end else '')
```
这两个程序会输出所有水仙花数,并满足题目要求。
相关问题
1.使用单重循环、三重循环两种不同的算法分别编写两个程序,输出所有水仙花数。要求: 在一行上输出;首尾无其他符号;相邻水仙花数以逗号分隔;最后一个数后面无逗号;不能
水仙花数是指一个三位数,其各位数字立方之和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
使用单重循环找到水仙花数的Python示例:
```python
for num in range(100, 1000): # 从100到999
hundreds = int(str(num)[0])
tens = int(str(num)[1])
ones = int(str(num)[2])
if num == hundreds**3 + tens**3 + ones**3:
print(hundreds, ones, tens, end=',') # 输出当前水仙花数,用end参数连接,最后一位不用逗号
```
使用三重循环查找水仙花数的C++示例:
```cpp
#include <iostream>
using namespace std;
void findWaterLily(int num) {
int a = num / 100; // 百位
int b = (num % 100) / 10; // 十位
int c = num % 10; // 个位
if (a*a*a + b*b*b + c*c*c == num) {
cout << a << c << b << (a != num % 100 ? "," : ""); // 输出并判断是否最后一个数
}
}
int main() {
for (int i = 100; i <= 999; ++i)
findWaterLily(i);
return 0;
}
```
阅读全文