📅  最后修改于: 2023-12-03 15:40:21.480000             🧑  作者: Mango
给定一个数组,计算数组中所有奇数索引上的合成数的总和。其中,合成数是指正整数因子至少为两个的数。
给定数组 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
,它的奇数索引位置为 [1, 3, 5, 7, 9]
,在这些位置上的合成数为 [6, 10, 14, 15]
,所以它们的总和为 6 + 10 + 14 + 15 = 45
。
def is_composite(num):
"""
判断一个数是否为合成数,返回 True 或 False
"""
factors = []
for i in range(2, int(num**0.5)+1):
if num % i == 0:
factors.append(i)
factors.append(num // i)
return len(factors) > 0
def sum_of_composites(nums):
"""
计算数组 nums 中所有奇数索引上的合成数的总和
"""
res = 0
for i in range(1, len(nums), 2):
if is_composite(nums[i]):
res += nums[i]
return res
>>> nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> sum_of_composites(nums)
45
以上即为完成该题的完整介绍和实现。