1390. Four Divisors

https://leetcode.com/problems/four-divisors/

Given an integer array nums, return the sum of divisors of the integers in that array that have exactly four divisors.

If there is no such integer in the array, return 0.

Example 1:

Input: nums = [21,4,7]
Output: 32
Explanation:
21 has 4 divisors: 1, 3, 7, 21
4 has 3 divisors: 1, 2, 4
7 has 2 divisors: 1, 7
The answer is the sum of divisors of 21 only.

Constraints:

  • 1 <= nums.length <= 10^4

  • 1 <= nums[i] <= 10^5

给定数组,返回有且只有四个除数的元素的除数之和。除数分布在square root两边,因此从平方根往下遍历到2,看是否只有一次能够整除。

class Solution:
    def sumFourDivisors(self, nums: List[int]) -> int:
        res = 0
        for num in nums:
            if int(sqrt(num)) ** 2 == num:
                continue
            d = 0
            for i in range(2, int(sqrt(num)) + 1):
                if num % i == 0:
                    if d != 0:
                        d = 0
                        break
                    d = i
            if d != 0:
                res += sum([1, num, num // d, d])
        return res
                    
                

Last updated