## Description

https://leetcode.com/problems/prime-number-of-set-bits-in-binary-representation/

Given two integers `left`

and `right`

, find the count of numbers in the range `[left, right]`

(inclusive) having a prime number of set bits in their binary representation.

(Recall that the number of set bits an integer has is the number of `1`

s present when written in binary. For example, `21`

written in binary is `10101`

which has 3 set bits. Also, 1 is not a prime.)

**Example 1:**

Input:left = 6, right = 10Output:4Explanation:6 -> 110 (2 set bits, 2 is prime) 7 -> 111 (3 set bits, 3 is prime) 9 -> 1001 (2 set bits , 2 is prime) 10->1010 (2 set bits , 2 is prime)

**Example 2:**

Input:left = 10, right = 15Output:5Explanation:10 -> 1010 (2 set bits, 2 is prime) 11 -> 1011 (3 set bits, 3 is prime) 12 -> 1100 (2 set bits, 2 is prime) 13 -> 1101 (3 set bits, 3 is prime) 14 -> 1110 (3 set bits, 3 is prime) 15 -> 1111 (4 set bits, 4 is not prime)

**Note:**

`left, right`

will be integers`left <= right`

in the range`[1, 10^6]`

.`right - left`

will be at most 10000.

## Explanation

Convert integer to bits and count how many bits are there. And then check if the count of bits is a prime number

## Python Solution

```
class Solution:
def countPrimeSetBits(self, L: int, R: int) -> int:
count = 0
for i in range(L, R + 1):
bin_i = bin(i)[2:]
count_bits = bin_i.count('1')
if count_bits > 1 and self.is_prime(count_bits):
count += 1
return count
def is_prime(self, n):
for i in range(2, floor(sqrt(n)) + 1):
if n % i == 0:
return False
return True
```

- Time Complexity: O(N^2).
- Space Complexity: O(N).