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