题目
给你一个整数数组 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
题解
class Solution {
public:
int sumFourDivisors(vector<int>& nums) {
int sum=0,cnt=0,tmp=0;
for(int i=0;i<nums.size();i++){
cnt=0;tmp=0;
for(int j=1;j*j<=nums[i];j++){
if(nums[i]%j==0){
if(j*j<nums[i]){
tmp+=j;
tmp+=nums[i]/j;
cnt+=2;
}else if(j*j==nums[i]){
tmp+=j;
cnt++;
}
}
if(cnt>4) break;
}
if(cnt==4) sum+=tmp;
}
return sum;
}
};