Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm A và B từ danh sách các ước số trong C ++

Trong hướng dẫn này, chúng tôi sẽ giải quyết vấn đề bên dưới.

Cho một mảng các số nguyên, ta phải tìm hai số A và B. Tất cả các số còn lại trong mảng là ước của A và B.

Nếu một số là ước của cả A và B thì nó sẽ xuất hiện hai lần trong mảng.

Hãy xem các bước để giải quyết vấn đề.

  • Số lớn nhất trong mảng là một trong các số từ A và B. Giả sử nó là A.

  • Bây giờ, B sẽ là số lớn thứ hai hoặc số không phải là ước của A.

Ví dụ

Hãy xem mã.

#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;
}

Đầu ra

Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.

A = 12, B = 6

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.