计算可被C ++中另一个数组中的至少一个元素整除的元素

我们给了两个数组,假设arr_1 []和arr_2 []都包含整数值,任务是计算可被另一数组中的至少一个元素整除的元素数。这意味着我们需要在第二个数组arr_2中计算那些至少具有一个因子的元素。

数组是一种数据结构,可以存储相同类型的元素的固定大小的顺序集合。数组用于存储数据集合,但是将数组视为相同类型的变量集合通常会更有用。

例如

Input − int arr_1[] = {1, 2, 3, 4, 5}
      arr_2[] = {2, 6, 12, 15}Output − count is 2

解释-arr_1 []中有5个元素,arr_2 []中有4个元素。arr_1 []中的所有元素都可以被arr_2 []整除。因此计数为5。

Input − int arr_1[] = {1, 2, 3, 4, 5}
      arr_2[] = {13, 11}Output − count is 0

解释-arr_1 []中有5个元素,arr_2 []中有2个元素。arr_1 []中的所有元素都不能被arr_2 []整除。因此计数为0。

以下程序中使用的方法如下

  • 创建两个数组,假设是arr_1 []和arr_2 []

  • 使用该length()函数计算两个数组的长度,该函数将根据数组中的元素返回一个整数值。

  • 取一个临时变量来存储元素的数量。

  • 假设我们创建一个unordered_set变量

  • i的起始循环为0,且i小于第二个数组的大小。

  • 在循环内部,在arr_2 [i]中执行插入。

  • 从i到0且i小于第一个数组的大小开始另一个循环。

  • 在循环内部,为j to和j * j <= arr_1 [i]启动另一个循环

  • 在此内部检查arr_1 [i]%j = 0,然后检查us.find(j)!= us.end或us.find(arr [i] / j)!= us.end()然后将计数增加1

  • 否则,休息

  • 返回计数

  • 打印结果。

示例

#include <iostream>
#include <unordered_set>
using namespace std;
//计算元素数量的功能
//第一个数组中
//存在于第二个数组中
int totalelements(int arr_1[], int size1, int arr_2[], int size2){
   //变量“结果”以计算元素数量
   int result = 0;
   //第二个数组元素的哈希
   unordered_set<int> h;
   for (int i = 0; i < size2; i++){
      h.insert(arr_2[i]);
   }
   //遍历数组元素
   //并找到其因素
   for (int i = 0; i < size1; i++){
      for (int j = 1; j * j <= arr_1[i]; j++){
         if (arr_1[i] % j == 0){
            //检查该因素是否存在
            //第二个数组使用h-
            if ((h.find(j) != h.end()) || (h.find(arr_1[i] / j)!= h.end())){
               result++;
               break;
            }
         }
      }
   }
   return result;
}
//主要功能
int main(){
   int arr_1[] = { 1, 2, 3, 4, 5 };
   int arr_2[] = { 2, 6, 12, 15 };
   int size1 = sizeof(arr_1) / sizeof(arr_1[0]);
   int size2 = sizeof(arr_2) / sizeof(arr_2[0]);
   cout <<"count is "<<totalelements(arr_1, size1, arr_2, size2);
   return 0;
}

输出结果

如果运行上面的代码,我们将获得以下输出-

count is 2