leetcode_1390 四因数

113 阅读1分钟

要求

给你一个整数数组 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)) 

image.png

解题思路:我们直接使用暴力循环的方式,我们对因数进行直接求解,注意两个部分第一个部分,我们注意一下循环的范围,从1开始到int(n ** 0.5) + 1,第二个部分注意map的使用,python高级用法,以后常用。