要求
给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和。
如果数组中不存在满足题意的整数,则返回 0 。
示例:
输入:nums = [21,4,7]
输出:32
解释:
21 有 4 个因数:1, 3, 7, 21
4 有 3 个因数:1, 2, 4
7 有 2 个因数:1, 7
答案仅为 21 的所有因数的和。
核心代码
class Solution:
def sumFourDivisors(self, nums: List[int]) -> int:
def factor(n):
l = []
for i in range(1,int(n ** 0.5) + 1):
if n % i == 0:
l.append(i)
if n / i != i:
l.append(int(n / i))
if len(l) > 4:
break
return sum(l) if len(l) == 4 else 0
return sum(map(factor,nums))
解题思路:我们直接使用暴力循环的方式,我们对因数进行直接求解,注意两个部分第一个部分,我们注意一下循环的范围,从1开始到int(n ** 0.5) + 1,第二个部分注意map的使用,python高级用法,以后常用。