Mô tả bài toán
Cho mảng nums kích thước n. Phân loại:
- Pairwise coprime: mọi cặp
(i,j)cógcd(nums[i],nums[j])=1. - Setwise coprime:
gcdcủa toàn bộ mảng = 1. - Không coprime: trường hợp còn lại.
Ví dụ
n=4, nums={7,11,13,17}. Đầu ra: Pairwise coprime.
Thuật toán (Sàng ước số)
- Tính
gcdValcủa toàn mảng. Nếu >1 → "not coprime". - Mảng
fac[x]đếm tần suất giá trịx. - Sàng: với mỗi số nguyên tố
k, đếmc = tổng fac[bội của k]. Nếu cónào cóc>1→ không pairwise. - Nếu pairwise → in "pairwise", ngược lại "setwise".
Đoạn mã C++
#include <bits/stdc++.h>
using namespace std;
void solve(int n, int nums[]) {
int fac[100]={0};
bool checkPrime[100]={0};
int gcdVal=0;
for(int i=0;i
Đầu vào / Đầu ra
Input: 4, {7,11,13,17}
Output: Pairwise coprime