এই সমস্যায়, আমাদের n উপাদানের একটি অ্যারে দেওয়া আছে। আমাদের কাজ হল অ্যারেতে সব প্রাইম নাম্বারের XOR প্রিন্ট করা।
একটি উদাহরণ দিয়ে সমস্যাটি বুঝতে পারি,
ইনপুট — {2, 6, 8, 9, 11}
আউটপুট —
এই সমস্যাটি সমাধান করতে, আমরা অ্যারেতে সব প্রাইম নাম্বার খুঁজে বের করব এবং তারপর সেগুলোকে XOR করে রেজাল্ট খুঁজে বের করব। কোনো এলিমেন্ট প্রাইম কিনা চেক করতে, আমরা সিভের অ্যালগরিদম ব্যবহার করব এবং তারপর প্রাইম হওয়া সব এলিমেন্টকে XOR করব।
উদাহরণ
আমাদের সমাধানের ইমপ্লিমেন্টেশন দেখানোর প্রোগ্রাম,
#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 findXorOfPrimes(int arr[], int n) {
SieveOfEratosthenes(100005);
int result = 0;
for (int i = 0; i < n; i++) {
if (prime[arr[i]])
result = result ^ arr[i];
}
return result;
}
int main() {
int arr[] = {4, 3, 2, 6, 100, 17};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "The xor of all prime number of the array is: " << findXorOfPrimes(arr, n);
return 0;
}
আউটপুট
The xor of all prime number of the array is: 16