Welcome to Subscribe On Youtube
2521. Distinct Prime Factors of Product of Array
Description
Given an array of positive integers nums, return the number of distinct prime factors in the product of the elements of nums.
Note that:
- A number greater than
1is called prime if it is divisible by only1and itself. - An integer
val1is a factor of another integerval2ifval2 / val1is an integer.
Example 1:
Input: nums = [2,4,3,7,10,6] Output: 4 Explanation: The product of all the elements in nums is: 2 * 4 * 3 * 7 * 10 * 6 = 10080 = 25 * 32 * 5 * 7. There are 4 distinct prime factors so we return 4.
Example 2:
Input: nums = [2,4,8,16] Output: 1 Explanation: The product of all the elements in nums is: 2 * 4 * 8 * 16 = 1024 = 210. There is 1 distinct prime factor so we return 1.
Constraints:
1 <= nums.length <= 1042 <= nums[i] <= 1000
Solutions
-
class Solution { public int distinctPrimeFactors(int[] nums) { Set<Integer> s = new HashSet<>(); for (int n : nums) { for (int i = 2; i <= n / i; ++i) { if (n % i == 0) { s.add(i); while (n % i == 0) { n /= i; } } } if (n > 1) { s.add(n); } } return s.size(); } } -
class Solution { public: int distinctPrimeFactors(vector<int>& nums) { unordered_set<int> s; for (int& n : nums) { for (int i = 2; i <= n / i; ++i) { if (n % i == 0) { s.insert(i); while (n % i == 0) { n /= i; } } } if (n > 1) { s.insert(n); } } return s.size(); } }; -
class Solution: def distinctPrimeFactors(self, nums: List[int]) -> int: s = set() for n in nums: i = 2 while i <= n // i: if n % i == 0: s.add(i) while n % i == 0: n //= i i += 1 if n > 1: s.add(n) return len(s) -
func distinctPrimeFactors(nums []int) int { s := map[int]bool{} for _, n := range nums { for i := 2; i <= n/i; i++ { if n%i == 0 { s[i] = true for n%i == 0 { n /= i } } } if n > 1 { s[n] = true } } return len(s) } -
function distinctPrimeFactors(nums: number[]): number { const s: Set<number> = new Set(); for (let n of nums) { let i = 2; while (i <= n / i) { if (n % i === 0) { s.add(i); while (n % i === 0) { n = Math.floor(n / i); } } ++i; } if (n > 1) { s.add(n); } } return s.size; }