Bài tập

Bài tập tìm bội chung nhỏ nhất của hai số a và b trong C

Huy Erick

Trong ngôn ngữ lập trình C, việc tìm bội chung nhỏ nhất của hai số a và b là một bài toán cơ bản. Chúng ta có thể giải quyết bài toán này bằng cách...

Trong ngôn ngữ lập trình C, việc tìm bội chung nhỏ nhất của hai số a và b là một bài toán cơ bản. Chúng ta có thể giải quyết bài toán này bằng cách sử dụng vòng lặp for hoặc dựa trên ước chung lớn nhất. Hãy cùng đi tìm hiểu cách thực hiện và ví dụ minh họa.

Cách sử dụng vòng lặp for tăng dần để tìm BCNN

Để tìm bội chung nhỏ nhất của hai số a và b, chúng ta chỉ cần duyệt qua các số chia hết cho số lớn nhất giữa a và b. Việc duyệt qua các số chia hết này sẽ giúp chúng ta tìm được kết quả tối ưu nhất.

Các bước thực hiện như sau:

Bước 1: Khai báo biến nguyên dương a, b để lưu giá trị của a và b. Khai báo biến kq để lưu giá trị bội chung nhỏ nhất và biến step để tính bước nhảy mỗi khi lặp.

Bước 2: Nhập giá trị của a và b từ bàn phím.

Bước 3: Sử dụng lệnh if với điều kiện nếu a > b thì gán giá trị của step = a, ngược lại gán step = b.

Bước 4: Sử dụng vòng lặp for bắt đầu tại i = step, kết thúc khi i = a*b và mỗi lần cộng i lên step. Trong vòng lặp, chúng ta sử dụng lệnh if với điều kiện nếu i chia hết cho cả a và b thì gán kq = i và kết thúc vòng lặp.

Bước 5: In ra màn hình giá trị của bội chung nhỏ nhất là kq.

#include 

int main() {
    // Khai báo a, b, kq
    int a, b, kq, step;

    // Nhập giá trị của a
    printf("Nhập giá trị của a:");
    scanf("%d", &a);

    // Nhập giá trị của b
    printf("Nhập giá trị của b:");
    scanf("%d", &b);

    // Tìm step là số lớn nhất giữa a và b
    if (a > b) {
        step = a;
    } else {
        step = b;
    }

    // Duyệt qua các số chia hết cho step
    for (int i = step; i = a*b; i += step) {
        if (i % a == 0 && i % b == 0) {
            kq = i;
            break;
        }
    }

    // In kết quả ra màn hình
    printf("Bội chung nhỏ nhất của %d và %d là %d", a, b, kq);
    return 0;
}

Ví dụ: Nếu ta nhập a = 16 và b = 8, kết quả sẽ là:

Nhập giá trị của a: 16
Nhập giá trị của b: 8
Bội chung nhỏ nhất của 16 và 8 là 16

Tìm BCNN của 2 số dựa vào UCLN

Có mối quan hệ giữa bội chung nhỏ nhất (BCNN) và ước chung lớn nhất (UCLN) của hai số a và b. Chúng ta có thể sử dụng UCLN để tìm BCNN của hai số này.

Các bước thực hiện như sau:

Bước 1: Tạo một hàm UCLN(int a, int b) để tính ước chung lớn nhất của a và b.

Bước 2: Trong hàm main, khai báo biến a, b để lưu giá trị của a và b.

Bước 3: Khai báo biến gan là kết quả của hàm UCLN(a, b).

Bước 4: In ra màn hình giá trị của BCNN là (a*b)/gan.

#include 

// Tính ước chung lớn nhất (UCLN)
int UCLN(int a, int b) {
    while (a != b) {
        if (a > b) {
            a = a - b;
        } else {
            b = b - a;
        }
    }
    return a;
}

int main() {
    // Khai báo a, b
    int a, b;

    // Nhập giá trị của a
    printf("Nhập giá trị của a:");
    scanf("%d", &a);

    // Nhập giá trị của b
    printf("Nhập giá trị của b:");
    scanf("%d", &b);

    // Tính gan = UCLN(a, b)
    int gan = UCLN(a, b);

    // In ra màn hình BCNN
    printf("BCNN là: %d", (a*b) / gan);
    return 0;
}

Ví dụ: Nếu ta nhập a = 13 và b = 12, kết quả sẽ là:

Nhập giá trị của a: 13
Nhập giá trị của b: 12
BCNN là: 156

Như vậy, chúng ta đã tìm hiểu cách tìm bội chung nhỏ nhất của hai số a và b trong ngôn ngữ lập trình C. Bằng cách sử dụng vòng lặp for hoặc dựa trên ước chung lớn nhất, chúng ta có thể giải quyết bài toán này một cách dễ dàng và hiệu quả.

Hình 1: Mối quan hệ giữa BCNN và UCLN của hai số a và b.

Nguồn: nanado.edu.vn

1