给你一个正整数数组 nums ,对 nums 所有元素求积之后,找出并返回乘积中 不同质因数 的数目。
注意:
质数 是指大于 1 且仅能被 1 及自身整除的数字。
如果 val2 / val1 是一个整数,则整数 val1 是另一个整数 val2 的一个因数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/distinct-prime-factors-of-product-of-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
一开始用简单的循环处理一直不能完全做对,看了下评论区才知道用哈希表,特地去查了下哈希表咋用再回来写的,害。。。
class Solution {
public int distinctPrimeFactors(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int x : nums) {
for (int i = 2; i * i <= x; i++)
if (x % i == 0) {
set.add(i);
while (x % i == 0)x /= i;
}
if (x > 1)set.add(x);
}
return set.size();
}
}