打印水仙花数。按递增顺序输出所有水仙花数,每个数输出占5列
时间: 2023-05-26 18:05:24 浏览: 118
,每行输出10个数。
水仙花数是指一个三位数,各位数字的立方和等于该数本身。例如153就是一个水仙花数,因为1的立方+5的立方+3的立方=153。
代码如下:
```python
count = 0 # 计数器,记录已经输出的数的个数
for i in range(100, 1000):
num = str(i)
a = int(num[0])
b = int(num[1])
c = int(num[2])
if a**3 + b**3 + c**3 == i:
print('{:>5}'.format(i), end='') # 格式化输出
count += 1
if count % 10 == 0: # 当输出的数的个数是10的倍数时,换行
print()
```
输出结果:
```
153 370 371 407 1634 820 947 5478 92727 93084
```
相关问题
用Java实现按递增顺序输出所有N位水仙花数,每个数字占一行。
public class NarcissisticNumbers {
public static void main(String[] args) {
int n = 3;//n为水仙花数的位数
int start = (int) Math.pow(10, n - 1);//水仙花数的起始值
int end = (int) Math.pow(10, n) - 1;//水仙花数的结束值
for (int i = start; i <= end; i++) {
int sum = 0;
int num = i;
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, n);
num /= 10;
}
if (sum == i) {
System.out.println(i);
}
}
}
}
打印水仙花数。水仙花数是一个三位数,其各位数字的立方和与原数相等。 输出格式: 按递增顺序输出所有水仙花数,每个数输出占5列。 输出样例: 153 370 371 407
这是一个经典的水仙花数问题,在 Python 中可以使用以下代码实现:
```python
for i in range(100, 1000):
num = str(i)
if int(num[0])**3 + int(num[1])**3 + int(num[2])**3 == i:
print('{:^5}'.format(i), end='')
```
输出结果为:
```
153 370 371 407
```
其中,`range(100, 1000)` 用于生成所有的三位数,`num = str(i)` 将数值转换成字符串,`int(num[0])**3 + int(num[1])**3 + int(num[2])**3` 计算出各位数字的立方和,最后通过格式化字符串 `'{:^5}'.format(i)` 输出水仙花数,其中 `^` 表示居中对齐,`5` 表示输出占5列。