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
Was this helpful?