1 class Solution: 2 def sumFourDivisors(self, nums: 'List[int]') -> int: 3 result = 0 4 n = len(nums) 5 for i in range(n): 6 s = set() 7 cur = nums[i] 8 for j in range(1,int(cur ** 0.5) + 1): 9 if cur % j == 0: 10 s.add(j) 11 s.add(cur//j) 12 if len(s) == 4: 13 result += sum(list(s)) 14 return result
算法思路:求约数。
本题思路很简单,就是计算一个数字的约数。但是如果暴力求解,可能会超时。
每次计算出一个约数,则可以使用除法计算出另一个约数。这种策略可以将时间复杂度降低到O(sqrt(N))。