Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

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


Cho mảng chứa tất cả ước số của A và B (ước chung xuất hiện 2 lần). Tìm A và B. Giải pháp: A = max(mảng). B = số lớn thứ 2 không chia hết A, hoặc số trùng lặp lớn nhất.

Ví dụ mã nguồn

#include <bits/stdc++.h>
using namespace std;

void findAB(int arr[], int n) {
    sort(arr, arr+n);
    int A = arr[n-1], B = -1;
    for (int i=n-2;i>=0;i--) {
        if (A % arr[i] != 0) { B = arr[i]; break; }
        if (i>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};
    findAB(arr, 10); // A=12, B=6
    return 0;
}

Kết quả

A = 12, B = 6

Ước của 12: 1,2,3,4,6,12. Ước của 6: 1,2,3,6. Gộp: 1,1,2,2,3,3,4,6,6,12.