Skip to content

Latest commit

 

History

History
61 lines (50 loc) · 1.71 KB

File metadata and controls

61 lines (50 loc) · 1.71 KB

2521. Distinct Prime Factors of Product of Array

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 1 is called prime if it is divisible by only 1 and itself.
  • An integer val1 is a factor of another integer val2 if val2 / val1 is 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 <= 104
  • 2 <= nums[i] <= 1000

Solutions (Rust)

1. Solution

impl Solution {
    pub fn distinct_prime_factors(nums: Vec<i32>) -> i32 {
        let max_num = *nums.iter().max().unwrap();
        let mut primes = vec![];

        for i in 2..=max_num {
            if (2..=(i as f64).sqrt() as i32).all(|j| i % j != 0) {
                primes.push(i);
            }
        }

        for i in 0..nums.len() {
            for j in 0..primes.len() {
                if nums[i] < primes[j] {
                    break;
                }

                if nums[i] % primes[j] == 0 {
                    primes[j] = 1;
                }
            }
        }

        primes.iter().filter(|&&x| x == 1).count() as i32
    }
}