Related Articles

# Print all distinct even and odd prefix Bitwise XORs of first N natural numbers

• Last Updated : 17 May, 2021

Given a positive integer N, the task is to print all the distinct even and odd values of prefix Bitwise XORs of first N natural numbers.

Examples:

Input: N = 6
Output:
Even: 0 4
Odd: 1 3 7
Explanation:
The prefix Bitwise XOR of the first 6 natural number si {1, 3, 0, 4, 1, 7}.
Even prefix Bitwise XORs are 0, 4.
Odd prefix Bitwise XORs are 1, 3, 7.

Input: N = 9
Output:
Even: 0 4 8
Odd: 1 3 7

Approach: The given problem can be solved based on the below observations:

• If the value of N modulo 4 is 0, then the value of Bitwise XOR of the first N natural numbers is N.
• If the value of N modulo 4 is 1, then the value of Bitwise XOR of the first N natural numbers is 1.
• If the value of N modulo 4 is 2, then the value of Bitwise XOR of the first N natural numbers is (N + 1).
• If the value of N modulo 4 is 3, then the value of Bitwise XOR of the first N natural numbers is 0.

Therefore, from the above principle, it can be said that Bitwise XOR as even numbers will always come as 0 or multiples of 4, and Bitwise XOR as odd numbers will always come as 1 or 1 less than multiples of 4.

Below is the implementation of the above approach.

## C++

 `// C++ program for the above approach` `#include ``using` `namespace` `std;` `// Print all distinct even & odd``// prefix Bitwise XORs from 1 to N``void` `evenOddBitwiseXOR(``int` `N)``{` `    ``cout << ``"Even: "` `<< 0 << ``" "``;` `    ``// Print the even number``    ``for` `(``int` `i = 4; i <= N; i = i + 4) {``        ``cout << i << ``" "``;``    ``}` `    ``cout << ``"\n"``;` `    ``cout << ``"Odd: "` `<< 1 << ``" "``;` `    ``// Print the odd number``    ``for` `(``int` `i = 4; i <= N; i = i + 4) {``        ``cout << i - 1 << ``" "``;``    ``}` `    ``if` `(N % 4 == 2)``        ``cout << N + 1;``    ``else` `if` `(N % 4 == 3)``        ``cout << N;``}` `// Driver Code``int` `main()``{``    ``int` `N = 6;``    ``evenOddBitwiseXOR(N);` `    ``return` `0;``}`

## Java

 `// Java approach for the above approach``class` `GFG{` `// Print all distinct even & odd``// prefix Bitwise XORs from 1 to N``static` `void` `evenOddBitwiseXOR(``int` `N)``{``    ``System.out.print(``"Even: "` `+ ``0` `+ ``" "``);` `    ``// Print the even number``    ``for``(``int` `i = ``4``; i <= N; i = i + ``4``)``    ``{``        ``System.out.print(i + ``" "``);``    ``}` `    ``System.out.print(``"\n"``);` `    ``System.out.print(``"Odd: "` `+ ``1` `+ ``" "``);` `    ``// Print the odd number``    ``for``(``int` `i = ``4``; i <= N; i = i + ``4``)``    ``{``        ``System.out.print(i - ``1` `+ ``" "``);``    ``}` `    ``if` `(N % ``4` `== ``2``)``        ``System.out.print(N + ``1``);``    ``else` `if` `(N % ``4` `== ``3``)``        ``System.out.print(N);``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``6``;``    ``evenOddBitwiseXOR(N);``}``}` `// This code is contributed by abhinavjain194`

## Python3

 `# Python3 program for the above approach` `# Print all distinct even & odd``# prefix Bitwise XORs from 1 to N``def` `evenOddBitwiseXOR(N):``    ` `    ``print``(``"Even: "``, ``0``, end ``=` `" "``)` `    ``# Print the even number``    ``for` `i ``in` `range``(``4``, N ``+` `1``, ``4``):``        ``print``(i, end ``=` `" "``)``        ` `    ``print``()` `    ``print``(``"Odd: "``, ``1``, end ``=` `" "``)` `    ``# Print the odd number``    ``for` `i ``in` `range``(``4``, N ``+` `1``, ``4``):``        ``print``(i ``-` `1``, end ``=` `" "``)``    ` `    ``if` `(N ``%` `4` `=``=` `2``):``        ``print``(N ``+` `1``)``    ``elif` `(N ``%` `4` `=``=` `3``):``        ``print``(N)` `# Driver Code``N ``=` `6` `evenOddBitwiseXOR(N)` `# This code is contributed by sanjoy_62`

## C#

 `// C# program for the above approach``using` `System;` `class` `GFG{``    ` `// Print all distinct even & odd``// prefix Bitwise XORs from 1 to N``static` `void` `evenOddBitwiseXOR(``int` `N)``{``    ``Console.Write(``"Even: "` `+ 0 + ``" "``);`` ` `    ``// Print the even number``    ``for``(``int` `i = 4; i <= N; i = i + 4)``    ``{``        ``Console.Write(i + ``" "``);``    ``}`` ` `   ``Console.Write(``"\n"``);`` ` `    ``Console.Write(``"Odd: "` `+ 1 + ``" "``);`` ` `    ``// Print the odd number``    ``for``(``int` `i = 4; i <= N; i = i + 4)``    ``{``        ``Console.Write(i - 1 + ``" "``);``    ``}`` ` `    ``if` `(N % 4 == 2)``        ``Console.Write(N + 1);``    ``else` `if` `(N % 4 == 3)``        ``Console.Write(N);``}` `// Driver code``public` `static` `void` `Main()``{``    ``int` `N = 6;``    ``evenOddBitwiseXOR(N);``}``}` `// This code is contributed by splevel62`

## Javascript

 ``
Output:
```Even: 0 4
Odd: 1 3 7```

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

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up