# Prime Number of Set Bits in Binary Representation | Set 1

• Difficulty Level : Hard
• Last Updated : 05 Apr, 2021

Given two integers ‘L’ and ‘R’, write a program to find the total numbers that are having prime number of set bits in their binary representation in the range [L, R].

Examples:

```Input  : l = 6, r = 10
Output : 4
Explanation  :
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)
Hence count is 4

Input  : l = 10, r = 15
Output : 5
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)
Hence count is 5```

Explanation: In this program we find a total number, that’s having prime number of set bit. so we use a CPP predefined function __builtin_popcount() these functions provide a total set bit in number. as well as be check the total bit’s is prime or not if prime we increase the counter these process repeat till given range.

## C++

 `// C++ program to count total prime``// number of set bits in given range``#include ``using` `namespace` `std;` `bool` `isPrime(``int` `n)``{``    ``// Corner cases``    ``if` `(n <= 1)  ``return` `false``;``    ``if` `(n <= 3)  ``return` `true``;`` ` `    ``// This is checked so that we can skip``    ``// middle five numbers in below loop``    ``if` `(n%2 == 0 || n%3 == 0) ``return` `false``;`` ` `    ``for` `(``int` `i=5; i*i<=n; i=i+6)``        ``if` `(n%i == 0 || n%(i+2) == 0)``           ``return` `false``;`` ` `    ``return` `true``;``}` `// count number, that contains prime number of set bit``int` `primeBitsInRange(``int` `l, ``int` `r)``{``    ``// tot_bit store number of bit in number``    ``int` `tot_bit, count = 0;` `    ``// iterate loop from l to r``    ``for` `(``int` `i = l; i <= r; i++) {` `        ``// use predefined function for finding``        ``// set bit it is return number of set bit``        ``tot_bit = __builtin_popcount(i);` `        ``// check tot_bit prime or, not``        ``if` `(isPrime(tot_bit))``            ``count++;``    ``}``    ``return` `count;``}` `// Driven Program``int` `main()``{``    ``int` `l = 6, r = 10;   ``    ``cout << primeBitsInRange(l, r);``    ``return` `0;``}`

## Java

 `// Java program to count total prime``// number of set bits in given range``import` `java.lang.*;` `class` `GFG{``static` `boolean` `isPrime(``int` `n)``{``    ``// Corner cases``    ``if` `(n <= ``1``) ``return` `false``;``    ``if` `(n <= ``3``) ``return` `true``;` `    ``// This is checked so that we can skip``    ``// middle five numbers in below loop``    ``if` `(n%``2` `== ``0` `|| n%``3` `== ``0``) ``return` `false``;` `    ``for` `(``int` `i=``5``; i*i<=n; i=i+``6``)``        ``if` `(n%i == ``0` `|| n%(i+``2``) == ``0``)``        ``return` `false``;` `    ``return` `true``;``}` `// count number, that contains prime number of set bit``static` `int` `primeBitsInRange(``int` `l, ``int` `r)``{``    ``// tot_bit store number of bit in number``    ``int` `tot_bit, count = ``0``;` `    ``// iterate loop from l to r``    ``for` `(``int` `i = l; i <= r; i++) {` `        ``// use predefined function for finding``        ``// set bit it is return number of set bit``        ``tot_bit = Integer.bitCount(i);` `        ``// check tot_bit prime or, not``        ``if` `(isPrime(tot_bit))``            ``count++;``    ``}``    ``return` `count;``}` `// Driven Program``public` `static` `void` `main(String[] args)``{``    ``int` `l = ``6``, r = ``10``;``    ``System.out.println(primeBitsInRange(l, r));``    ` `}``}``// This code is Contributed by mits`

## Python3

 `# Python3 program to count total prime``# number of set bits in given range``def` `isPrime(n):` `    ``# Corner cases``    ``if` `(n <``=` `1``): ``return` `False``;``    ``if` `(n <``=` `3``): ``return` `True``;` `    ``# This is checked so that we can skip``    ``# middle five numbers in below loop``    ``if` `(n ``%` `2` `=``=` `0` `or` `n ``%` `3` `=``=` `0``):``        ``return` `False``;``        ` `    ``i ``=` `5``;``    ``while` `(i ``*` `i <``=` `n):``        ``if``(n ``%` `i ``=``=` `0` `or` `n ``%` `(i ``+` `2``) ``=``=` `0``):``            ``return` `False``;``        ``i ``=` `i ``+` `6``;` `    ``return` `True``;` `# count number, that contains``# prime number of set bit``def` `primeBitsInRange(l, r):` `    ``# tot_bit store number of``    ``# bit in number``    ``count ``=` `0``;` `    ``# iterate loop from l to r``    ``for` `i ``in` `range``(l, r ``+` `1``):` `        ``# use predefined function for finding``        ``# set bit it is return number of set bit``        ``tot_bit ``=` `bin``(i).count(``'1'``);` `        ``# check tot_bit prime or, not``        ``if` `(isPrime(tot_bit)):``            ``count ``+``=` `1``;` `    ``return` `count;` `# Driver Code``l ``=` `6``;``r ``=` `10``;``print``(primeBitsInRange(l, r));` `# This code is contributed by mits`

## C#

 `// C# program to count total prime``// number of set bits in given range` `class` `GFG{``    ` `    ``// To count the bits``static` `int` `BitCount(``int` `n)``{``    ``int` `count = 0;``    ``while` `(n != 0)``    ``{``        ``count++;``        ``n &= (n - 1);``    ``}``    ` `    ``return` `count;``}``        ` `static` `bool` `isPrime(``int` `n)``{``    ``// Corner cases``    ``if` `(n <= 1) ``return` `false``;``    ``if` `(n <= 3) ``return` `true``;` `    ``// This is checked so that we can skip``    ``// middle five numbers in below loop``    ``if` `(n%2 == 0 || n%3 == 0) ``return` `false``;` `    ``for` `(``int` `i=5; i*i<=n; i=i+6)``        ``if` `(n%i == 0 || n%(i+2) == 0)``        ``return` `false``;` `    ``return` `true``;``}` `// count number, that contains prime number of set bit``static` `int` `primeBitsInRange(``int` `l, ``int` `r)``{``    ``// tot_bit store number of bit in number``    ``int` `tot_bit, count = 0;` `    ``// iterate loop from l to r``    ``for` `(``int` `i = l; i <= r; i++) {` `        ``// use predefined function for finding``        ``// set bit it is return number of set bit``        ``tot_bit = BitCount(i);` `        ``// check tot_bit prime or, not``        ``if` `(isPrime(tot_bit))``            ``count++;``    ``}``    ``return` `count;``}` `// Driven Program``public` `static` `void` `Main()``{``    ``int` `l = 6, r = 10;``    ``System.Console.WriteLine(primeBitsInRange(l, r));``    ` `}``}``// This code is Contributed by mits`

## PHP

 ``

## Javascript

 ``

Output:

`4`

Time Complexity : Let’s n = (r-l)
so overall time complexity is N*sqrt(N)
We can optimize above solution using Sieve of Eratosthenes.
Prime Number of Set Bits in Binary Representation | Set 2

My Personal Notes arrow_drop_up