# Find XOR of numbers from the range [L, R]

• Difficulty Level : Basic
• Last Updated : 30 Aug, 2022

Given two integers L and R, the task is to find the XOR of elements of the range [L, R]
Examples:

Input: L = 4, R = 8
Output:
4 ^ 5 ^ 6 ^ 7 ^ 8 = 8

Input: L = 3, R = 7
Output: 3

Naive Approach: Initialize answer as zero, Traverse all numbers from L to R and perform XOR of the numbers one by one with the answer. This would take O(N) time.

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the XOR of elements``// from the range [l, r]``int` `findXOR(``int` `l, ``int` `r)``{``    ``int` `ans = 0;``    ``for` `(``int` `i = l; i <= r; i++) {``        ``ans = ans ^ i;``    ``}``    ``return` `ans;``}` `// Driver code``int` `main()``{``    ``int` `l = 4, r = 8;` `    ``cout << findXOR(l, r);` `    ``return` `0;``}` `// this code is contributed by devendra solunke`

## Java

 `/*package whatever //do not write package name here */` `import` `java.io.*;` `class` `GFG {``    ``// Function to return the XOR of elements``    ``// from the range [l, r]``    ``public` `static` `int` `findXOR(``int` `l, ``int` `r)``    ``{``        ``int` `ans = ``0``;``        ``for` `(``int` `i = l; i <= r; i++) {``            ``ans = ans ^ i;``        ``}``        ``return` `ans;``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `l = ``4``;``        ``int` `r = ``8``;` `        ``System.out.println(findXOR(l, r));``    ``}``}``// this code is contributed by devendra solunke`

## Python3

 `# Python3 implementation of the approach``from` `operator ``import` `xor` `# Function to return the XOR of elements``# from the range [1, n]``def` `findXOR(l, r):``  ``ans ``=` `0``  ``for` `i ``in` `range``(l,r``+``1``):``    ``ans ``=` `xor(ans,i)``  ``return` `ans` `# Driver code``l ``=` `4``; r ``=` `8``;` `print``(findXOR(l, r));` `# This code is contributed by Arpit Jain`

## C#

 `// c# implementation of find xor between given range``using` `System;` `public` `class` `GFG {` `    ``// Function to return the XOR of elements``    ``// from the range [l, r]``    ``static` `int` `findXOR(``int` `l, ``int` `r)``    ``{``        ``int` `ans = 0;``        ``for` `(``int` `i = l; i <= r; i++) {``            ``ans = ans ^ i;``        ``}``        ``return` `ans;``    ``}` `    ``// Driver code``    ``static` `void` `Main(String[] args)``    ``{``        ``int` `l = 4;``        ``int` `r = 8;` `        ``Console.WriteLine(findXOR(l, r));``    ``}``}` `// this code is contributed by devendra saunke`

## Javascript

 `// Javascript code to find xor of given range````// this code is contributed by devendra solunke`

Output

`8`

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

Efficient Approach: By following the approach discussed here, we can find the XOR of elements from the range [1, N] in O(1) time.
Using this approach, we have to find xor of elements from the range [1, L – 1] and from the range [1, R] and then xor the respective answers again to get the xor of the elements from the range [L, R]. This is because every element from the range [1, L – 1] will get XORed twice in the result resulting in a 0 which when XORed with the elements of the range [L, R] will give the result.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the XOR of elements``// from the range [1, n]``int` `findXOR(``int` `n)``{``    ``int` `mod = n % 4;` `    ``// If n is a multiple of 4``    ``if` `(mod == 0)``        ``return` `n;` `    ``// If n % 4 gives remainder 1``    ``else` `if` `(mod == 1)``        ``return` `1;` `    ``// If n % 4 gives remainder 2``    ``else` `if` `(mod == 2)``        ``return` `n + 1;` `    ``// If n % 4 gives remainder 3``    ``else` `if` `(mod == 3)``        ``return` `0;``}` `// Function to return the XOR of elements``// from the range [l, r]``int` `findXOR(``int` `l, ``int` `r)``{``    ``return` `(findXOR(l - 1) ^ findXOR(r));``}` `// Driver code``int` `main()``{``    ``int` `l = 4, r = 8;` `    ``cout << findXOR(l, r);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG``{``    ``// Function to return the XOR of elements``    ``// from the range [1, n]``    ``static` `int` `findXOR(``int` `n)``    ``{``        ``int` `mod = n % ``4``;` `        ``// If n is a multiple of 4``        ``if` `(mod == ``0``)``            ``return` `n;` `        ``// If n % 4 gives remainder 1``        ``else` `if` `(mod == ``1``)``            ``return` `1``;` `        ``// If n % 4 gives remainder 2``        ``else` `if` `(mod == ``2``)``            ``return` `n + ``1``;` `        ``// If n % 4 gives remainder 3``        ``else` `if` `(mod == ``3``)``            ``return` `0``;``        ``return` `0``;``    ``}` `    ``// Function to return the XOR of elements``    ``// from the range [l, r]``    ``static` `int` `findXOR(``int` `l, ``int` `r)``    ``{``        ``return` `(findXOR(l - ``1``) ^ findXOR(r));``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{` `        ``int` `l = ``4``, r = ``8``;` `            ``System.out.println(findXOR(l, r));``    ``}``}` `// This code contributed by Rajput-Ji`

## Python3

 `# Python3 implementation of the approach``from` `operator ``import` `xor` `# Function to return the XOR of elements``# from the range [1, n]``def` `findXOR(n):``    ``mod ``=` `n ``%` `4``;` `    ``# If n is a multiple of 4``    ``if` `(mod ``=``=` `0``):``        ``return` `n;` `    ``# If n % 4 gives remainder 1``    ``elif` `(mod ``=``=` `1``):``        ``return` `1``;` `    ``# If n % 4 gives remainder 2``    ``elif` `(mod ``=``=` `2``):``        ``return` `n ``+` `1``;` `    ``# If n % 4 gives remainder 3``    ``elif` `(mod ``=``=` `3``):``        ``return` `0``;` `# Function to return the XOR of elements``# from the range [l, r]``def` `findXORFun(l, r):``    ``return` `(xor(findXOR(l ``-` `1``) , findXOR(r)));` `# Driver code``l ``=` `4``; r ``=` `8``;` `print``(findXORFun(l, r));` `# This code is contributed by PrinciRaj1992`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ``// Function to return the XOR of elements``    ``// from the range [1, n]``    ``static` `int` `findXOR(``int` `n)``    ``{``        ``int` `mod = n % 4;` `        ``// If n is a multiple of 4``        ``if` `(mod == 0)``            ``return` `n;` `        ``// If n % 4 gives remainder 1``        ``else` `if` `(mod == 1)``            ``return` `1;` `        ``// If n % 4 gives remainder 2``        ``else` `if` `(mod == 2)``            ``return` `n + 1;` `        ``// If n % 4 gives remainder 3``        ``else` `if` `(mod == 3)``            ``return` `0;``        ``return` `0;``    ``}` `    ``// Function to return the XOR of elements``    ``// from the range [l, r]``    ``static` `int` `findXOR(``int` `l, ``int` `r)``    ``{``        ``return` `(findXOR(l - 1) ^ findXOR(r));``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{` `        ``int` `l = 4, r = 8;` `            ``Console.WriteLine(findXOR(l, r));``    ``}``}` `// This code is contributed by AnkitRai01`

## Javascript

 ``

Output

`8`

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

My Personal Notes arrow_drop_up