数组中的元素不能被C ++中的另一个数组的任何元素整除

在这个问题中,我们给了两个数组arr1 []和arr2 []。我们的任务是创建一个程序,以查找不能被另一个数组的任何元素整除的数组元素。 

问题描述: 在这里,我们需要找到arr1中所有不能被arr2的任何元素整除的元素。

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

输入:  arr1 [] = {17,15,5,12,8} arr2 [] = {5,4}

输出:  17

解释-

arr1的元素和划分它们的元素,

17->没有元素可以划分它。
15-> 5划分元素。
5-> 5划分元素。

12-> 4划分元素。

8-> 4划分元素。

解决方法-

解决该问题的一种简单而幼稚的方法是使用直接方法。我们将遍历arr1,对于arr1的每个元素,我们将检查arr2的任何元素是否将元素除。如果没有元素将其划分,则打印该元素。

算法-

步骤1:循环到arr1,i-> 0到n-1。

步骤2.1: 对于每个arr1 [i],为j-> 0到n-1循环arr2。

步骤2.2.1: 如果arr1 [i]%arr2 [j] == 0,则继续标记= -1。

步骤2.3:如果标志!= -1,则打印arr1 [i]。

该程序说明了我们解决方案的工作原理,

示例

#include<iostream>

using namespace std;

void findEleNotDivisbleByArray(int arr1[], int arr2[], int arr1Size, int arr2Size) {

   

   int flag = 0;

   for (int i = 0; i < arr1Size; i++) {

      flag = 0;

      for (int j = 0; j < arr2Size; j++){

         

         if( arr1[i] % arr2[j] == 0 ) {

            flag = -1;   

            break;

         }

      }

      if ( flag == 0 )

            cout<<arr1[i]<<"\t";

   }

}

int main()

{

   int arr1[] = {17, 15, 5, 12, 23, 8};

   int arr2[] = {5, 4};

   int arr1Size = sizeof(arr1)/sizeof(arr1[0]);

   int arr2Size = sizeof(arr2)/sizeof(arr2[0]);

   cout<<"不能被另一个数组的任何元素整除的数组元素是 ";

   findEleNotDivisbleByArray(arr1, arr2, arr1Size, arr2Size);

   return 0;

}

输出-

不能被另一个数组的任何元素整除的数组元素是 17 23

此解决方案有效,但效率不高。因此,让我们来看一个有效的解决方案,

在此方法中,我们将创建arr1元素的数组isDivisible []。对于arr2的所有元素,标记其所有倍数,直到arr1的最大元素。并打印isDisible数组中标记为false的所有元素。

该程序说明了我们解决方案的工作原理,

示例

#include<iostream>

using namespace std;

void findEleNotDivisbleByArray(int arr1[], int arr2[], int arr1Size, int arr2Size) {

   

   int maxEle = 0;

   for (int i = 0; i < arr1Size; i++)

      if (arr1[i] > maxEle)

         maxEle = arr1[i];

   int mark[maxEle];

   for (int i = 0; i < arr2Size; i++)

      for (int j = arr2[i]; j <= maxEle; j += arr2[i])

         mark[j] = 1;

   for (int i = 0; i < arr1Size; i++)

      if ( mark[arr1[i]] != 1)

         cout << arr1[i] << endl;

}

int main()

{

   int arr1[] = {17, 15, 5, 12, 8};

   int arr2[] = {5, 4};

   int arr1Size = sizeof(arr1)/sizeof(arr1[0]);

   int arr2Size = sizeof(arr2)/sizeof(arr2[0]);

   cout<<"不能被另一个数组的任何元素整除的数组元素是 ";

   findEleNotDivisbleByArray(arr1, arr2, arr1Size, arr2Size);

   return 0;

}

输出-

不能被另一个数组的任何元素整除的数组元素是 17

以上是 数组中的元素不能被C ++中的另一个数组的任何元素整除 的全部内容, 来源链接: utcz.com/z/314304.html

回到顶部