# Number of integers with odd number of set bits

• Difficulty Level : Easy

Given a number n, count number of integers smaller than or equal to n that have odd number of set bits.
Examples:

```Input : 5
Output : 3
Explanation :
Integers with odd number of
set bits in range 1 to 5 :
0 contains 0 set bits
1 contains 1 set bits
2 contains 1 set bits
3 contains 2 set bits
4 contains 1 set bits
5 contains 2 set bits

Input : 10
Output : 5
Explanation :
Integers with odd set bits are 1, 2,
4, 7 and 8.```

Prerequisites: Count number of set bits
The idea is based on below fact.

If n is odd then there are total n+1 integers smaller than or equal to n (0, 1, 2 … n) and half of these integers contain odd number of set bits.

How to handle case when n is even? We know result for n-1. We count set bits in n and add 1 to n/2 if the count is odd. Else we return n/2.

## C++

 `// CPP code to find numbers with``// odd number of set bits``#include ``using` `namespace` `std;` `// function that returns the number``// of integers with odd number of``// set bits``int` `countWithOddSetBits(``int` `n)``{``    ``// If n is odd, then half of the``    ``// integers in (0, 1, .. n) contain``    ``// odd number of set bits.``    ``if` `(n % 2 != 0)``        ``return` `(n + 1) / 2;` `    ``// If n is even, we know result for``    ``// n-1. We explicitly compute set bit``    ``// count in n.``    ``int` `count = __builtin_popcount(n);` `    ``int` `ans = n / 2;``    ``if` `(count % 2 != 0)``        ``ans++;``    ``return` `ans;``}` `// Driver code``int` `main()``{``    ``int` `n = 10;``    ``cout << countWithOddSetBits(n);``    ``return` `0;``}`

## C

 `// C code to find numbers with``// odd number of set bits``#include ` `// function that returns the number``// of integers with odd number of``// set bits``int` `countWithOddSetBits(``int` `n)``{``    ``// If n is odd, then half of the``    ``// integers in (0, 1, .. n) contain``    ``// odd number of set bits.``    ``if` `(n % 2 != 0)``        ``return` `(n + 1) / 2;` `    ``// If n is even, we know result for``    ``// n-1. We explicitly compute set bit``    ``// count in n.``    ``int` `count = __builtin_popcount(n);` `    ``int` `ans = n / 2;``    ``if` `(count % 2 != 0)``        ``ans++;``    ``return` `ans;``}` `// Driver code``int` `main()``{``    ``int` `n = 10;``    ``printf``(``"%d"``,countWithOddSetBits(n));``    ``return` `0;``}` `// This code is contributed by kothavvsaaash.`

## Java

 `// Java code to find numbers``// with odd number of set bits``import` `java.io.*;` `class` `GFG``{``    ` `// function that returns the``// number of integers with``// odd number of set bits``static` `int` `countWithOddSetBits(``int` `n)``{``    ``// If n is odd, then half``    ``// of the integers in``    ``// (0, 1, .. n) contain``    ``// odd number of set bits.``    ``if` `(n % ``2` `!= ``0``)``        ``return` `(n + ``1``) / ``2``;` `    ``// If n is even, we know``    ``// result for n-1. We``    ``// explicitly compute set``    ``// bit count in n.``    ``int` `count = (n);` `    ``int` `ans = n / ``2``;``    ``if` `(count % ``2` `!= ``0``)``        ``ans++;``    ``return` `ans;``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``int` `n = ``10``;``    ``System.out.println( countWithOddSetBits(n));``}``}` `// This code is contributed by aj_36`

## Python3

 `# Python 3 code to find numbers with``# odd number of set bits` `# function that returns the number``# of integers with odd number of``# set bits``def` `countWithOddSetBits(n):``    ` `    ``# If n is odd, then half of the``    ``# integers in (0, 1, .. n) contain``    ``# odd number of set bits.``    ``if` `(n ``%` `2` `!``=` `0``):``        ``return` `(n ``+` `1``) ``/` `2` `    ``# If n is even, we know result for``    ``# n-1. We explicitly compute set``    ``# bit count in n.``    ``count ``=` `bin``(n).count(``'1'``)` `    ``ans ``=` `n ``/` `2``    ``if` `(count ``%` `2` `!``=` `0``):``        ``ans ``+``=` `1``    ``return` `ans` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `10``    ``print``(``int``(countWithOddSetBits(n)))` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# code to find numbers``// with odd number of set bits``using` `System;` `class` `GFG``{``    ` `// function that returns the``// number of integers with``// odd number of set bits``static` `int` `countWithOddSetBits(``int` `n)``{``    ``// If n is odd, then half``    ``// of the integers in``    ``// (0, 1, .. n) contain``    ``// odd number of set bits.``    ``if` `(n % 2 != 0)``        ``return` `(n + 1) / 2;` `    ``// If n is even, we know``    ``// result for n-1. We``    ``// explicitly compute set``    ``// bit count in n.``    ``int` `count = (n);` `    ``int` `ans = n / 2;``    ``if` `(count % 2 != 0)``        ``ans++;``    ``return` `ans;``}` `// Driver Code``static` `public` `void` `Main ()``{``    ``int` `n = 10;``    ``Console.WriteLine(countWithOddSetBits(n));``}``}` `// This code is contributed by ajit`

## PHP

 ``

## Javascript

 ``

Output :

`5`

Time complexity: O(k), where k is the max number of bits in a number.
Auxiliary space: O(1)

My Personal Notes arrow_drop_up