zoukankan      html  css  js  c++  java
  • 四因数


    给你一个整数数组 nums,请你返回该数组中恰有四个因数的这些整数的各因数之和。如果数组中不存在满足题意的整数,则返回 0


    解题思路

    遍历数组中的每个元素,依次判断这些元素是否恰好有四个因数。对于任一元素 x,如果整数 x 有因数 y,那么也必有因数 x/y,并且 y 和 x/y 中至少有一个不大于 sqrt(x)。这样我们只需要在 [1, sqrt(x)] 的区间内枚举可能为整数 x 的因数 y,并通过 x/y 得到整数 x 的其它因数。如果 x 恰好有四个因数,我们就将其因数之和累加到答案中

    class Solution {
        public int sumFourDivisors(int[] nums) {
            int result = 0;
            for(int num : nums) {
            	// factor_count 因数的个数,factor_sum 因数的和
                int factor_count = 0, factor_sum = 0;
                for(int i = 1; i * i <= num; i++) {
                	// i 是 num 的一个因数
                    if(num % i == 0) {
                        factor_count++;
                        factor_sum += i;
                        // 判断 i 和 num/i 是否相等
                        // 不相等才能将 num/i 加入
                        if(i * i != num) {
                            factor_count++;
                            factor_sum += num/i;
                        }
                    }
                }
                if(factor_count == 4) {
                    result += factor_sum;
                }
            }
            return result;
        }
    }
    

  • 相关阅读:
    用户使用调查报告
    Beta总结
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
    Beta冲刺Day3
    Beta冲刺Day2
    Beta冲刺Day1
    Beta预备
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/14037106.html
Copyright © 2011-2022 走看看