Watch 10 video solutions for Prime Number of Set Bits in Binary Representation, a easy level problem involving Math, Bit Manipulation. This walkthrough by codestorywithMIK has 3,555 views views. Want to try solving it yourself? Practice on FleetCode or read the detailed text solution.
Given two integers left and right, return the count of numbers in the inclusive range [left, right] 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.
21 written in binary is 10101, which has 3 set bits.
Example 1:
Input: left = 6, right = 10 Output: 4 Explanation: 6 -> 110 (2 set bits, 2 is prime) 7 -> 111 (3 set bits, 3 is prime) 8 -> 1000 (1 set bit, 1 is not prime) 9 -> 1001 (2 set bits, 2 is prime) 10 -> 1010 (2 set bits, 2 is prime) 4 numbers have a prime number of set bits.
Example 2:
Input: left = 10, right = 15 Output: 5 Explanation: 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) 5 numbers have a prime number of set bits.
Constraints:
1 <= left <= right <= 1060 <= right - left <= 104Problem Overview: Given two integers left and right, count how many numbers in this range have a prime number of set bits (1s) in their binary representation. For each integer, convert it conceptually to binary, count the 1s, and check whether that count is a prime number.
Approach 1: Bit Counting with Set Checking (Time: O(n * log W), Space: O(1))
Iterate through every number from left to right. For each number, count the number of set bits using a popcount operation (such as __builtin_popcount in C++ or bin(x).count('1') in Python). Once you have the count, check whether it belongs to a small predefined set of prime numbers like {2,3,5,7,11,13,17,19}. The key insight is that the maximum number of bits for the constraint range is small, so the possible set-bit counts are limited. This approach is simple, readable, and relies on basic bit manipulation and math concepts.
Approach 2: Optimized Prime Check with Bit Manipulation (Time: O(n), Space: O(1))
This approach removes the explicit prime lookup structure and encodes prime counts inside a bitmask. First compute the number of set bits for each number using a fast popcount operation. Then check primality using a precomputed mask such as 665772, where the binary representation stores which counts are prime. The check becomes (mask >> count) & 1. This turns the prime test into a constant-time bit operation. The idea leverages properties of small primes and keeps the entire solution in pure bitwise arithmetic. It is extremely compact and common in competitive programming solutions involving bit manipulation.
Recommended for interviews: The bit counting with prime set approach is what most interviewers expect first. It clearly shows you understand binary representation, set-bit counting, and basic prime logic. The bitmask optimization is a nice follow-up that demonstrates deeper familiarity with bit tricks and constant-time checks.
| Approach | Time | Space | When to Use |
|---|---|---|---|
| Bit Counting with Prime Set Checking | O(n * log W) | O(1) | Best for readability and interviews. Easy to implement with built-in popcount. |
| Optimized Prime Check with Bit Mask | O(n) | O(1) | When you want a compact constant-time prime check using bit manipulation. |