数组中所有素数的 XOR 运算(C++)


在这一问题中,我们得到一个包含 n 个元素的数组。我们的任务是输出数组中所有素数的异或值。

让我们举个例子来了解这个问题,

输入 − {2, 6, 8, 9, 11}

输出

为了解决这个问题,我们将找出数组中的所有素数,然后进行异或运算以找出结果。为了检查该元素是否是素数,我们将使用筛法算法,然后对所有素数元素进行异或运算。

范例

程序展示了我们解决方案的实现:

 实时演示

#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

更新于:20-04-2020

231 浏览量

开启您的职业生涯

通过完成课程获得认证

开始
广告