计算对数(i,j),以使C ++中arr [i]可被arr [j]整除或arr [j]被arr [i]整除

我们给了N个元素的数组arr []。目的是找到所有有效索引对(i,j)的计数,以使arr [i]可被arr [j]整除或arr [j]可被arr [i]整除且i!= j。

我们将通过对每个对数使用两个for循环遍历数组arr []并检查当i为arr [i]%arr [j] == 0或arr [j]%arr [i] == 0时执行此操作!= j。如果为true,则增加对数。

让我们通过示例来理解。

输入− Arr [] = {2,4,3,6} N = 4

输出-有效对数-3

说明-有效对是-

Arr[0] & Arr[1] → (2,4) here 4%2==0 0!=1
Arr[0] & Arr[1] → (2,6) here 6%2==0 0!=3
Arr[2] & Arr[3] → (3,6) here 6%3==0 2!=3

输入− Arr [] = {2,5,7,9,11} N = 5

输出-有效对数-0

说明-没有数字完全除以另一个。不能形成一对。

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

  • 我们采用用随机数初始化的整数数组Arr []。

  • 取一个变量n,该变量存储Arr []的长度。

  • 函数countPairs(int arr [],int n)接受一个数组,将其长度作为输入并返回有效且满足所需条件的对。

  • 对数组中的每个元素使用两个for循环遍历数组。

  • 外循环从0 <= i <n-1,内循环i <j <n

  • 检查arr [i]%arr [j] == 0或arr [j]%arr [i] == 0。如果任一条件为真,则递增计数一次。

  • 在所有循环结束时,计数将具有有效的对总数

  • 返回计数结果。

示例

#include <bits/stdc++.h>
using namespace std;
int countPairs(int arr[], int n){
   //配对数
   int count = 0;
   for (int i = 0; i < n-1; i++){
      for (int j = i + 1; j < n; j++){
         if(arr[i]%arr[j]==0 || arr[j]%arr[i]==0)
            { count++; }
      }
   }
   return count;
}
int main(){
   int Arr[] = { 2,3,4,5,6 };
   int len = sizeof(Arr) / sizeof(Arr[0]);
   cout << "Count of number of pairs : "<< countPairs(Arr, len);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of number of pairs : 3