在 C++ 中从除数列表中查找 A 和 B


在本教程中,我们将解决以下问题。

给定一个整数数组,我们必须找到两个数 A 和 B。数组中所有剩余数字都是 A 和 B 的除数。

如果一个数字是 A 和 B 的公约数,那么它将在数组中出现两次。

让我们来看看解决该问题的步骤。

  • 数组中的最大数是 A 和 B 中的一个数字。假设它为 A。

  • 现在,B 将是第二大的数字或不是 A 的除数的数字。

示例

让我们看看代码。

 实时演示

#include <bits/stdc++.h>
using namespace std;
void findTheDivisors(int arr[], int n) {
   sort(arr, arr + n);
   int A = arr[n - 1], B = -1;
   for (int i = n - 2; i > -1; i--) {
      if (A % arr[i] != 0) {
         B = arr[i];
         break;
      }
      if (i - 1 >= 0 && arr[i] == arr[i - 1]) {
         B = arr[i];
         break;
      }
   }
   cout << "A = " << A << ", B = " << B << endl;
}
int main() {
   int arr[] = { 3, 2, 3, 4, 12, 6, 1, 1, 2, 6 };
   findTheDivisors(arr, 10);
   return 0;
}

输出

如果你执行以上程序,那么你将得到以下结果。

A = 12, B = 6

结论

如果你对本教程有任何疑问,请在评论区留言。

更新时间: 01-Feb-2021

122 篇查看数

开启您的职业生涯

完成课程即可获得认证

开始
广告
© . All rights reserved.