Open In App

1 to n bit numbers with no consecutive 1s in binary representation

Last Updated : 03 Apr, 2023
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

Given a number n, our task is to find all 1 to n bit numbers with no consecutive 1s in their binary representation.
Examples:

Input: N = 4
Output: 1 2 4 5 8 9 10
These are numbers with 1 to 4
bits and no consecutive ones in
binary representation.

Input: n = 3
Output: 1 2 4 5

Approach:

  1. There will be 2n numbers with number of bits from 1 to n.
  2. Iterate through all 2n numbers. For every number check if it contains consecutive set bits or not. To check, we do bitwise and of current number i and left-shifted i. If the bitwise and contains a non-zero bit (or its value is non-zero), then the given number contains consecutive set bits.

Below is the implementation of the above approach:

C++
// Print all numbers upto n bits
// with no consecutive set bits.
#include<iostream>
using namespace std;

void printNonConsecutive(int n)
{
    // Let us first compute
    // 2 raised to power n.
    int p = (1 << n);

    // loop 1 to n to check 
    // all the numbers
    for (int i = 1; i < p; i++)

        // A number i doesn't contain
        // consecutive set bits if
        // bitwise and of i and left
        // shifted i don't contain a
        // commons set bit.
        if ((i & (i << 1)) == 0)
            cout << i << " ";
}

// Driver code
int main()
{
    int n = 3;
    printNonConsecutive(n);
    return 0;
}
Java
// Java Code to Print all numbers upto 
// n bits with no consecutive set bits.
import java.util.*;

class GFG
{
    static void printNonConsecutive(int n)
        {
            // Let us first compute 
            // 2 raised to power n.
            int p = (1 << n);

            // loop 1 to n to check 
            // all the numbers
            for (int i = 1; i < p; i++)

            // A number i doesn't contain
            // consecutive set bits if
            // bitwise and of i and left
            // shifted i doesn't contain a
            // commons set bit.
            if ((i & (i << 1)) == 0)
                System.out.print(i + " ");
        
        }

// Driver code
public static void main(String[] args)
    {
        int n = 3;
        printNonConsecutive(n);
    }
}

// This code is contributed by Mr. Somesh Awasthi
Python3
# Python3 program to print all numbers upto 
# n bits with no consecutive set bits.

def printNonConsecutive(n):

    # Let us first compute  
    # 2 raised to power n.
    p = (1 << n)

    # loop 1 to n to check 
    # all the numbers
    for i in range(1, p):

        # A number i doesn't contain
        # consecutive set bits if
        # bitwise and of i and left
        # shifted i don't contain a
        # common set bit.
        if ((i & (i << 1)) == 0):
            print(i, end = " ")

# Driver code
n = 3
printNonConsecutive(n)

# This code is contributed by Anant Agarwal.
C#
 // C# Code to Print all numbers upto 
// n bits with no consecutive set bits.
using System;

class GFG
{
    static void printNonConsecutive(int n)
    {
        // Let us first compute
        // 2 raised to power n.
        int p = (1 << n);

        // loop 1 to n to check 
        // all the numbers
        for (int i = 1; i < p; i++)

            // A number i doesn't contain
            // consecutive set bits if
            // bitwise and of i and left
            // shifted i don't contain a
            // commons set bit.
            if ((i & (i << 1)) == 0)
                Console.Write(i + " ");
        
    }

// Driver code
public static void Main()
    {
        int n = 3;
        printNonConsecutive(n);
    }
}
// This code is contributed by nitin mittal.
PHP
<?php
// Print all numbers upto n bits
// with no consecutive set bits.

function printNonConsecutive($n)
{
    
    // Let us first compute
    // 2 raised to power n.
    $p = (1 << $n);

    // loop 1 to n to check 
    // all the numbers
    for ($i = 1; $i < $p; $i++)

        // A number i doesn't contain
        // consecutive set bits if
        // bitwise and of i and left
        // shifted i don't contain a
        // commons set bit.
        if (($i & ($i << 1)) == 0)
            echo $i . " ";
}

    // Driver code
    $n = 3;
    printNonConsecutive($n);         
    
// This code is contributed by Sam007
?>
JavaScript
<script>

// Javascript Code to Print all numbers upto 
// n bits with no consecutive set bits.

function printNonConsecutive(n)
        {
            // Let us first compute 
            // 2 raised to power n.
            let p = (1 << n);

            // loop 1 to n to check 
            // all the numbers
            for (let i = 1; i < p; i++)

            // A number i doesn't contain
            // consecutive set bits if
            // bitwise and of i and left
            // shifted i don't contain a
            // commons set bit.
            if ((i & (i << 1)) == 0)
                document.write(i + " ");
        
        }

// driver program

        let n = 3;
        printNonConsecutive(n);
        
</script>

Output
1 2 4 5 

Time Complexity: O(2N)
Auxiliary Space: O(1)



Next Article
Article Tags :
Practice Tags :

Similar Reads