计算可被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

以上是 计算可被C ++中另一个数组中的至少一个元素整除的元素 的全部内容, 来源链接: utcz.com/z/330914.html

回到顶部