1390. 四因数【JavaScript】

给你一个整数数组 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/four-divisors

解答方法中主要采用了JavaScript es6中的 Set 数据结构去重,并要注意完全平方数这个特殊的例子。
代码:

/**
 * @param {number[]} nums
 * @return {number}
    */
 const sumFourDivisors=nums=>{
    let ans = 0;
    for (let i = 0; i < nums. length; i++){
       const temp = help(nums[i]);
       if ( temp.size === 4) {
        ans += Array. from( temp.values( )).reduce((a, b) => a + b, 0);
          }
       }
       return ans;
    }
    function help(num){
       const max = Math. floor(Math. sqrt(num));
       const ans = new Set();
       let min = 1;
       while (min <= max) {
          if ( (num / min) %1==0){
              ans .add(min);
              ans. add(num/min);
          }
           min++ ;
        }
         return ans;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值