华为机试完全数计算
题目:
想法:
通过双层循环统计输入数字的完全数,第一层循环遍历输入数字,第二层循环判断当前数字是否是完全数。循环遍历结束后输出统计的完全数。
input_number = int(input())
count = 0
for i in range(1, input_number):
number_list = []
for j in range(1, i):
if i % j == 0:
number_list.append(j)
if i == sum(number_list):
count += 1
print(count)
因为使用了双层循环,因此时间复杂度为:
O
(
n
2
)
O(n^2)
O(n2)。
需要使用额外的存储空间存储当前数字下的约数,因此空间复杂度为:
O
(
n
)
O(n)
O(n)。