给你一个整数数组 nums
,请你返回该数组中恰有四个因数的这些整数的各因数之和。
如果数组中不存在满足题意的整数,则返回 0
。
示例:
输入:nums = [21,4,7] 输出:32 解释: 21 有 4 个因数:1, 3, 7, 21 4 有 3 个因数:1, 2, 4 7 有 2 个因数:1, 7 答案仅为 21 的所有因数的和。
提示:
1 <= nums.length <= 10^4
1 <= nums[i] <= 10^5
C++
class Solution {
public:
int sumFourDivisors(vector<int>& nums)
{
int res=0;
for(auto num:nums)
{
int a=(int)sqrt(num);
vector<int> tmp;
int flag=0;
for(int i=a;i>=1;i--)
{
if(0==num%i)
{
tmp.push_back(i);
if(i!=num/i)
{
tmp.push_back(num/i);
}
}
if(tmp.size()>4)
{
flag=1;
break;
}
}
if(0==flag && 4==tmp.size())
{
for(int i=0;i<4;i++)
{
res+=tmp[i];
}
}
}
return res;
}
};