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

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 = 8Output:8

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

**Naive Approach:** Intilialize 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.**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 <bits/stdc++.h>` `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

`<script>` ` ` `// Javascript implementation of the approach` ` ` ` ` `// Function to return the XOR of elements` ` ` `// from the range [1, n]` ` ` `function` `findxOR(n)` ` ` `{` ` ` `let 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]` ` ` `function` `findXOR(l, r)` ` ` `{` ` ` `return` `(findxOR(l - 1) ^ findxOR(r));` ` ` `}` ` ` ` ` `let l = 4, r = 8;` ` ` `document.write(findXOR(l, r));` `</script>` |

**Output:**

8

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

In case you wish to attend **live classes **with experts, please refer **DSA Live Classes for Working Professionals **and **Competitive Programming Live for Students**.