Problem Link

Description


You are given an integer array nums.

Return true if the frequency of any element of the array is prime, otherwise, return false.

The frequency of an element x is the number of times it occurs in the array.

A prime number is a natural number greater than 1 with only two factors, 1 and itself.

Β 

Example 1:

Input: nums = [1,2,3,4,5,4]

Output: true

Explanation:

4 has a frequency of two, which is a prime number.

Example 2:

Input: nums = [1,2,3,4,5]

Output: false

Explanation:

All elements have a frequency of one.

Example 3:

Input: nums = [2,2,2,4,4]

Output: true

Explanation:

Both 2 and 4 have a prime frequency.

Β 

Constraints:

  • 1 <= nums.length <= 100
  • 0 <= nums[i] <= 100

Solution


Python3

def generate_primes(n):
    isPrime = [True] * (n + 1)
    isPrime[0] = isPrime[1] = False
 
    for i in range(2, n + 1):
        if isPrime[i]:
            for j in range(i * i, n + 1, i):
                isPrime[j] = False
 
    return isPrime
 
isPrime = generate_primes(101)
 
class Solution:
    def checkPrimeFrequency(self, nums: List[int]) -> bool:
        N = len(nums)
        counter = Counter(nums)
 
        for v in counter.values():
            if isPrime[v]:
                return True
 
        return False