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;
        }
    }
    

  • 相关阅读:
    用spring boot 来创建第一个application
    Entily实体类
    ORM
    lambda expression
    Domain logic approochs
    mysql的数据类型(Data type)
    Backup &recovery备份和还原
    spring AOP Capability and goals
    CDI Features
    Tomcat的配置与安装
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/14037106.html
Copyright © 2011-2022 走看看