Toán & số học
2. Ước chung lớn nhất — thuật toán Euclid
UCLN của hai số là số lớn nhất chia hết cả hai. Thuật toán Euclid tìm nó cực nhanh dựa trên một quan sát: . Ta thay cặp số bằng cặp nhỏ hơn cho đến khi số thứ hai bằng 0.
int gcd(int a, int b) {
while (b != 0) {
int r = a % b;
a = b;
b = r;
}
return a; // khi b = 0 thi a la UCLN
}
// boi chung nho nhat:
long long lcm(int a, int b) {
return (long long)a / gcd(a, b) * b; // chia truoc de tranh tran
}
Bội chung nhỏ nhất: . Chia cho gcd trước khi nhân để tránh tràn số.