XOR of all Prime numbers in an Array
Last Updated :
07 Sep, 2022
Given an array of integers arr[]. The task is to find the bitwise XOR of all the prime numbers present in the array.
Examples:
Input: arr[] = {2, 5, 8, 4, 3}
Output: 4
Input: arr[] = {7, 12, 2, 6, 11}
Output: 14
Approach:
- Create a sieve to check whether an element is prime or not in O(1).
- Traverse the array and check if the number is prime.
- Compute the xor of all the prime elements of the array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool prime[100005];
void SieveOfEratosthenes( int n)
{
memset (prime, true , sizeof (prime));
prime[1] = false ;
for ( int p = 2; p * p <= n; p++) {
if (prime[p]) {
for ( int i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
}
int xorPrimes( int arr[], int n)
{
SieveOfEratosthenes(100005);
int xorVal = 0;
for ( int i = 0; i < n; i++) {
if (prime[arr[i]])
xorVal = xorVal ^ arr[i];
}
return xorVal;
}
int main()
{
int arr[] = { 4, 3, 2, 6, 100, 17 };
int n = sizeof (arr) / sizeof (arr[0]);
cout << xorPrimes(arr, n);
return 0;
}
|
Java
import java.util.Arrays;
class GFG
{
static boolean prime[] = new boolean [ 100005 ];
static void SieveOfEratosthenes( int n)
{
Arrays.fill(prime, true );
prime[ 1 ] = false ;
for ( int p = 2 ; p * p < n; p++)
{
if (prime[p])
{
for ( int i = p * 2 ; i < n; i += p)
{
prime[i] = false ;
}
}
}
}
static int xorPrimes( int arr[], int n)
{
SieveOfEratosthenes( 100005 );
int xorVal = 0 ;
for ( int i = 0 ; i < n; i++)
{
if (prime[arr[i]])
{
xorVal = xorVal ^ arr[i];
}
}
return xorVal;
}
public static void main(String[] args)
{
int arr[] = { 4 , 3 , 2 , 6 , 100 , 17 };
int n = arr.length;
System.out.println(xorPrimes(arr, n));
}
}
|
Python3
prime = [ True ] * ( 100005 )
def SieveOfEratosthenes(n):
prime[ 1 ] = False
p = 2
while p * p < = n:
if prime[p]:
for i in range (p * 2 , n + 1 , p):
prime[i] = False
p + = 1
def xorPrimes(arr, n):
SieveOfEratosthenes( 100004 )
xorVal = 0
for i in range ( 0 , n):
if prime[arr[i]]:
xorVal = xorVal ^ arr[i]
return xorVal
if __name__ = = "__main__" :
arr = [ 4 , 3 , 2 , 6 , 100 , 17 ]
n = len (arr)
print (xorPrimes(arr, n))
|
C#
using System;
class GFG
{
static bool []prime = new bool [100005];
static void SieveOfEratosthenes( int n)
{
for ( int i = 0; i < 100005; i++)
prime[i] = true ;
prime[1] = false ;
for ( int p = 2; p * p < n; p++)
{
if (prime[p])
{
for ( int i = p * 2; i < n; i += p)
{
prime[i] = false ;
}
}
}
}
static int xorPrimes( int []arr, int n)
{
SieveOfEratosthenes(100005);
int xorVal = 0;
for ( int i = 0; i < n; i++)
{
if (prime[arr[i]])
{
xorVal = xorVal ^ arr[i];
}
}
return xorVal;
}
public static void Main()
{
int []arr = {4, 3, 2, 6, 100, 17};
int n = arr.Length;
Console.WriteLine(xorPrimes(arr, n));
}
}
|
Javascript
<script>
var prime = Array(100005).fill( true );
function SieveOfEratosthenes( n)
{
prime[1] = false ;
for ( var p = 2; p * p <= n; p++) {
if (prime[p]) {
for ( var i = p * 2; i <= n; i += p)
prime[i] = false ;
}
}
}
function xorPrimes( arr, n)
{
SieveOfEratosthenes(100005);
var xorVal = 0;
for ( var i = 0; i < n; i++) {
if (prime[arr[i]])
xorVal = xorVal ^ arr[i];
}
return xorVal;
}
var arr = [ 4, 3, 2, 6, 100, 17 ];
var n = arr.length;
document.write( xorPrimes(arr, n));
</script>
|
Share your thoughts in the comments
Please Login to comment...