Advertisement
1390. Four Divisors
UnknownView on LeetCode
Time: O(n √n)
Space: O(1)
Approach
For each number iterate divisors up to sqrt; count exactly 4 divisors (i, n/i, 1, n); sum those.
1390.cs
C#
// Approach: For each number iterate divisors up to sqrt; count exactly 4 divisors (i, n/i, 1, n); sum those.
// Time: O(n √n) Space: O(1)
public class Solution
{
public int SumFourDivisors(int[] nums)
{
int ans = 0;
foreach (int num in nums)
{
int divisor = 0;
for (int i = 2; i * i <= num; ++i)
{
if (num % i == 0)
{
if (divisor == 0)
divisor = i;
else
{
divisor = 0;
break;
}
}
}
if (divisor > 0 && divisor * divisor < num)
ans += 1 + num + divisor + num / divisor;
}
return ans;
}
}Advertisement
Was this solution helpful?