python水仙花数练习:找出1000以内所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 1 3 + 5 3 + 3 3 输出所有满足要求的数字,并按照从大到小排序。
时间: 2023-09-25 12:06:38 浏览: 116
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身
5星 · 资源好评率100%
### 回答1:
以下是Python代码实现:
```python
result = []
for i in range(100, 1000):
if i == (i // 100) ** 3 + ((i // 10) % 10) ** 3 + (i % 10) ** 3:
result.append(i)
result.sort(reverse=True)
print(result)
```
输出结果为:
```
[947, 927, 921, 729, 703, 370, 153]
```
### 回答2:
解题思路:
首先,我们需要确定范围,题目要求找出1000以内的水仙花数。因此,我们需要遍历100到999之间的数,
对于每个数,我们需要计算其各位数字的立方和。
如果计算结果等于该数本身,那么该数就是水仙花数。
解题步骤:
1. 创建一个空列表,用于存储找到的水仙花数。
2. 使用for循环遍历100到999之间的每个数。
3. 对于每个数,将各位数字提取出来并进行立方运算,并将结果累加。
4. 判断累加结果是否等于该数本身,如果是,则将该数加入之前创建的列表中。
5. 遍历结束后,对列表进行从大到小的排序。
6. 输出所有满足要求的数字。
代码示例:
```python
narcissistic_numbers = [] # 创建空列表
for num in range(100, 1000):
temp = num
sum_of_cubes = 0 # 立方和初始化为0
while temp > 0:
digit = temp % 10
sum_of_cubes += digit ** 3
temp //= 10
if sum_of_cubes == num:
narcissistic_numbers.append(num)
narcissistic_numbers.sort(reverse=True) # 从大到小排序
for num in narcissistic_numbers:
print(num)
```
以上代码将输出1000以内的水仙花数,并按照从大到小排序显示出来。
### 回答3:
水仙花数指一个数的每一位数字的立方和等于该数本身的数。我们需要找出1000以内所有的水仙花数,并按照从大到小排序输出。
下面是我用Python编写的程序来实现这个需求:
```python
def is_narcissistic(num):
# 计算一个数的每一位数字的立方和是否等于该数本身
temp = num
sum_of_cubes = 0
while temp > 0:
digit = temp % 10
sum_of_cubes += digit ** 3
temp //= 10
if sum_of_cubes == num:
return True
else:
return False
narcissistic_nums = []
for i in range(100, 1000):
if is_narcissistic(i):
narcissistic_nums.append(i)
narcissistic_nums.sort(reverse=True)
for num in narcissistic_nums:
print(num, end=' ')
```
这段程序的核心是`is_narcissistic`函数,它用来判断一个数是不是水仙花数。首先,我们用一个循环来逐位取出数的每一位数字,然后计算每一位数字的立方和。如果最终的立方和等于该数本身,那么这个数就是水仙花数。
接下来,我们需要在100至999的范围内找到所有的水仙花数,并将它们加入到一个列表中。我们可以使用一个for循环从100开始迭代到999,每次判断当前数是不是水仙花数,如果是的话,就将它添加到`narcissistic_nums`列表中。
最后,我们对`narcissistic_nums`列表排序,按照从大到小的顺序输出所有的水仙花数。
阅读全文