---
# System prepended metadata

title: Modulo và GCD

---

# Modulo và GCD
## Modulo
Phép chia lấy phần dư có những tính chất cơ bản sau:
$(a+b) \% n = (a \% n + b \% n) \% n$
$(a*b) \% n = (a \% n * b \% n) \% n$
## GCD
### Thuật toán "ngây thơ"
Duyệt từ $min(a, b)$ đến $1$ để tìm GCD.
```cpp
for (int i=min(a,b);i>=1;i--){
    if (a%i==0&&b%i==0){
        return i;
    }
}
```
### Thuật toán Euclid
Dựa trên tính chất $GCD(a, b) = GCD(b, a \% b)$.
```cpp
int gcd(a,b){
    if (b==0){
        return a;
    }
    else{
        gcd(b,a%b);
    }
}
```