 GeeksforGeeks App
Open App Browser
Continue

# Print numbers having first and last bits as the only set bits

Given a positive integer n. The problem is to print numbers in the range 1 to n having first and last bits as the only set bits.
Examples:

```Input : n = 10
Output : 1 3 5 9
(1)10 = (1)2.
(3)10 = (11)2.
(5)10 = (101)2.
(9)10 = (1001)2```

Naive Approach: Print “1”. Now for i = 3 to n, check if (i-1) is a Perfect power of two or not. If true then print i.

## C++

 `// C++ implementation to print numbers in the range 1 to n``// having first and last bits as the only set bits``#include `` ` `using` `namespace` `std;`` ` `typedef` `unsigned ``long` `long` `int` `ull;`` ` `// function to check whether 'n'``// is a power of 2 or not``bool` `powerOfTwo(ull n)``{``    ``return` `(!(n & n-1));``}`` ` `// function to print numbers in the range 1 to n having``// first and last bits as the only set bits``void` `printNumWithFirstLastBitsSet(ull n)``{``    ``ull i = 1;``     ` `    ``// first number is '1'    ``    ``cout << i << ``" "``;``     ` `    ``// generating all the numbers``    ``for` `(i = 3; i <= n; i++)``        ``// if true, then print 'i'``        ``if` `(powerOfTwo(i-1))``            ``cout << i << ``" "``;    ``}`` ` `// Driver program to test above``int` `main()``{``    ``ull n = 10;``    ``printNumWithFirstLastBitsSet(n);``    ``return` `0;``} `

## Java

 `// Naive approach ``// Java implementation to print``// numbers in the range 1 to n``// having first and last bits as``// the only set bits``import` `java.io.*;`` ` `class` `GFG {``     ` `    ``// function to check whether 'n'``    ``// is a power of 2 or not``    ``static` `Boolean powerOfTwo(``long` `n)``    ``{``        ``return` `(!((n & n-``1``) != ``0``));``    ``}``     ` `    ``// function to print numbers in the ``    ``// range 1 to n having first and``    ``// last bits as the only set bits``    ``static` `void` `printNumWithFirstLastBitsSet(``long` `n)``    ``{``        ``long` `i = ``1``;``         ` `        ``// first number is '1' ``        ``System.out.print( i + ``" "``);``         ` `        ``// generating all the numbers``        ``for` `(i = ``3``; i <= n; i++)``         ` `            ``// if true, then print 'i'``            ``if` `(powerOfTwo(i - ``1``))``                ``System.out.print(i + ``" "``); ``    ``}``        ``// Driver function``        ``public` `static` `void` `main (String[] args) {``        ``long` `n = 10l;``        ``printNumWithFirstLastBitsSet(n);``     ` `        ``}``}`` ` `//This code is contributed by Gitanjali.`

## Python3

 `# Python implementation to print ``# numbers in the range 1 to n``# having first and last bits ``# as the only set bits``import` `math`` ` `# function to check whether 'n'``# is a power of 2 or not``def` `powerOfTwo(n):``    ``re ``=` `(n & n ``-` `1``)``    ``return` `(re ``=``=` `0``)`` ` `# function to print numbers ``# in the range 1 to n having``# first and last bits as ``# the only set bits``def` `printNumWithFirstLastBitsSet(n):``    ``i ``=` `1``     ` `    ``# first number is '1' ``    ``print` `( i, end ``=` `" "``)``     ` `    ``# generating all the numbers``    ``for` `i ``in` `range``(``3``, n ``+` `1``):``         ` `        ``# if true, then print 'i'``        ``if` `(powerOfTwo(i ``-` `1``)):``            ``print` `( i, end ``=` `" "``)``     ` `     ` `# driver function``n ``=` `10``printNumWithFirstLastBitsSet(n)`` ` `# This code is contributed by Gitanjali.`

## C#

 `// Naive approach ``// C# implementation to print``// numbers in the range 1 to n``// having first and last bits as``// the only set bits``using` `System;`` ` `class` `GFG {``     ` `    ``// function to check whether 'n'``    ``// is a power of 2 or not``    ``static` `Boolean powerOfTwo(``long` `n)``    ``{``        ``return` `(!((n & n-1) != 0));``    ``}``     ` `    ``// function to print numbers in the ``    ``// range 1 to n having first and``    ``// last bits as the only set bits``    ``static` `void` `printNumWithFirstLastBitsSet(``long` `n)``    ``{``        ``long` `i = 1;``         ` `        ``// first number is '1' ``        ``Console.Write( i + ``" "``);``         ` `        ``// generating all the numbers``        ``for` `(i = 3; i <= n; i++)``         ` `            ``// if true, then print 'i'``            ``if` `(powerOfTwo(i - 1))``                ``Console.Write(i + ``" "``); ``    ``}``     ` `    ``// Driver function``    ``public` `static` `void` `Main () ``    ``{``        ``long` `n = 10L;``        ``printNumWithFirstLastBitsSet(n);``         ` `    ``}``}`` ` `// This code is contributed by Vt_m.`

## PHP

 ``

## Javascript

 ``

Output:

`1 3 5 9`

Time Complexity : O(n)

Auxiliary Space: O(1)

Efficient Approach: Print “1”. Now one by one generate perfect power of two (except ‘1’) with the help of bitwise left shift operation. Bitwise xor these numbers with 1 and if result is in the range print them else stop.

## C++

 `// C++ implementation to print numbers in the range 1 to n``// having first and last bits as the only set bits``#include `` ` `using` `namespace` `std;`` ` `typedef` `unsigned ``long` `long` `int` `ull;`` ` `// function to print numbers in the range 1 to n having``// first and last bits as the only set bits``void` `printNumWithFirstLastBitsSet(ull n)``{``    ``ull power_2 = 1, num;``     ` `    ``// first number is '1'    ``    ``cout << power_2 << ``" "``;``     ` `    ``while` `(1)    ``    ``{``        ``// obtaining next perfect power of 2``        ``power_2 <<= 1;``         ` `        ``// toggling the last bit to convert ``        ``// it to as set bit``        ``num = power_2 ^ 1;``         ` `        ``// if out of range then break;``        ``if` `(n < num)``            ``break``;``             ` `        ``// display    ``        ``cout << num << ``" "``;    ``    ``}        ``}`` ` `// Driver program to test above``int` `main()``{``    ``ull n = 10;``    ``printNumWithFirstLastBitsSet(n);``    ``return` `0;``}`

## Java

 `// efficient approach Java implementation``// to print numbers in the range 1 to n``// having first and last bits as the only set bits`` ` `import` `java.io.*;`` ` `class` `GFG {`` ` `    ``// function to print numbers in ``    ``// the range 1 to n having first and ``    ``// last bits as the only set bits``    ``static` `void` `prNumWithFirstLastBitsSet(``long` `n)``    ``{``        ``long` `power_2 = ``1``, num;``     ` `        ``// first number is '1' ``        ``System.out.print(power_2 + ``" "``);``     ` `        ``while` `(``true``) ``        ``{``            ``// obtaining next perfect power of 2``            ``power_2 <<= ``1``;``             ` `            ``// toggling the last bit to  ``            ``// convert it to as set bit``            ``num = power_2 ^ ``1``;``             ` `            ``// if out of range then break;``            ``if` `(n < num)``                ``break``;``                 ` `            ``// display ``            ``System.out.print(num + ``" "``); ``        ``}``     ` `}`` ` `    ``public` `static` `void` `main (String[] args) {``    ``long` `n = ``10``;``    ``prNumWithFirstLastBitsSet(n);`` ` `    ``}``}``// This code is contributed by Gitanjali.`

## Python3

 `# Python3 implementation to ``# pr numbers in the range ``# 1 to n having first and ``# last bits as the only set bits`` ` ` ` `# function to print numbers in the ``# range 1 to n having first and ``# last bits as the only set bits``def` `prNumWithFirstLastBitsSet(n):``     ` `    ``power_2 ``=` `1``     ` `    ``# first number is '1' ``    ``print` `( power_2, end ``=` `' '``)``     ` `    ``while` `(``1``):``        ``# obtaining next perfect``        ``# power of 2``        ``power_2 <<``=` `1``         ` `        ``# toggling the last bit to  ``        ``# convert it to as set bit``        ``num ``=` `power_2 ^ ``1``         ` `        ``# if out of range then break;``        ``if` `(n < num):``            ``break``             ` `        ``# display ``        ``print` `( num, end ``=` `' '``) ``     ` ` ` ` ` `# Driver program ``n ``=` `10``;``prNumWithFirstLastBitsSet(n)`` ` `# This code is contributed by saloni1297`

## C#

 `// efficient approach C# implementation``// to print numbers in the range 1 to n``// having first and last bits as the only set bits``using` `System;`` ` `class` `GFG {`` ` `    ``// function to print numbers in ``    ``// the range 1 to n having first and ``    ``// last bits as the only set bits``    ``static` `void` `prNumWithFirstLastBitsSet(``long` `n)``    ``{``        ``long` `power_2 = 1, num;``     ` `        ``// first number is '1' ``        ``Console.Write(power_2 + ``" "``);``     ` `        ``while` `(``true``) ``        ``{``            ``// obtaining next perfect power of 2``            ``power_2 <<= 1;``             ` `            ``// toggling the last bit to ``            ``// convert it to as set bit``            ``num = power_2 ^ 1;``             ` `            ``// if out of range then break;``            ``if` `(n < num)``                ``break``;``                 ` `            ``// display ``            ``Console.Write(num + ``" "``); ``        ``}``     ` `    ``}``     ` `    ``// Driver code``    ``public` `static` `void` `Main () ``    ``{``        ``long` `n = 10;``        ``prNumWithFirstLastBitsSet(n);`` ` `    ``}``}``// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output:

`1 3 5 9`

Time Complexity : O(logn)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up