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

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``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

 ``

Javascript

 ``

Output
`1 2 4 5 `

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

Previous
Next