2521-数组乘积中的不同质因数数目
给你一个正整数数组 nums
,对 nums
所有元素求积之后,找出并返回乘积中 不同质因数 的数目。
注意:
- 质数 是指大于
1
且仅能被1
及自身整除的数字。 - 如果
val2 / val1
是一个整数,则整数val1
是另一个整数val2
的一个因数。
示例 1:
**输入:** nums = [2,4,3,7,10,6]
**输出:** 4
**解释:**
nums 中所有元素的乘积是:2 * 4 * 3 * 7 * 10 * 6 = 10080 = 25 * 32 * 5 * 7 。
共有 4 个不同的质因数,所以返回 4 。
示例 2:
**输入:** nums = [2,4,8,16]
**输出:** 1
**解释:**
nums 中所有元素的乘积是:2 * 4 * 8 * 16 = 1024 = 210 。
共有 1 个不同的质因数,所以返回 1 。
提示:
1 <= nums.length <= 104
2 <= nums[i] <= 1000
遍历每个数,分解质因数,把质因数加到哈希表中。分解质因数的原理见 第 324 场周赛视频讲解 ,可以看看。
答案为哈希表的大小。
1 | class Solution: |
1 | func distinctPrimeFactors(nums []int) int { |
复杂度分析
- 时间复杂度:O(n\sqrt{U}),其中 n 为 nums 的长度,U=\max(\textit{nums})。
- 空间复杂度:O\left(\dfrac{U}{\log U}\right)。至多有 O\left(\dfrac{U}{\log U}\right) 个质因数。
相似题目
Comments