复制
收藏
提问
简洁
# (二) 编写函数 fun2:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位 数,其各位数字立方和等于该数本身。 例如:153 是一个"水仙花数",因为 153=1 的三次方+5 的三次方+3 的 三次方。 # 1. 用代码实现水仙花数,并打印 # 2.将所有的水仙花数存在列表中,并打印 # 3.时间复杂度O(n) 空间复杂度为O(1)
0秒前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
编写函数 fun2
以打印所有水仙花数,这些数是三位数,其各位数字的立方和等于该数本身。以下是实现这一功能的步骤和方法。
函数实现
- 定义函数:创建一个名为
fun2
的函数,该函数不需要参数。 - 循环遍历:使用一个循环从 100 到 999 遍历所有三位数。
- 拆分数字:在循环中,将当前数拆分为个位、十位和百位数字。
- 计算立方和:计算这些数字的立方和,并与原数比较。
- 判断水仙花数:如果立方和等于原数,则打印该数,并将其添加到列表中。
列表存储
- 创建列表:在函数开始时,创建一个空列表用于存储水仙花数。
- 添加元素:当发现一个水仙花数时,将其添加到列表中。
复杂度分析
- 时间复杂度:O(n),其中 n 是三位数的数量(900),因为循环只遍历一次。
- 空间复杂度:O(1),不包括列表,因为除了输入外,我们不使用额外的存储空间。
示例代码
def fun2():
narcissus_numbers = [] # 创建一个空列表存储水仙花数
for num in range(100, 1000): # 遍历所有三位数
hundreds = num // 100 # 百位数字
tens = (num % 100) // 10 # 十位数字
units = num % 10 # 个位数字
if num == (hundreds ** 3 + tens ** 3 + units ** 3): # 判断是否为水仙花数
print(num) # 打印水仙花数
narcissus_numbers.append(num) # 将水仙花数添加到列表
print("所有水仙花数为:", narcissus_numbers) # 打印列表中的水仙花数
fun2()
以上代码实现了题目要求的功能,打印所有水仙花数,并将它们存储在列表中,同时满足时间复杂度 O(n) 和空间复杂度 O(1) 的要求。123456789
你觉得结果怎么样?