Cách tìm bội chung nhỏ nhất trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tìm bội chung nhỏ nhất (BCNN) trong C#. Đây là một bài tập thường gặp khi bắt đầu học một ngữ lập trình nào đó. Bởi nó vừa áp dụng kiến thức toán cơ sở và kiến thức lập trình cơ bản.

Trong số học, bội chung nhỏ nhất của hai số nguyên a và b là số nguyên nhỏ nhất chia hết cho cả a và b.

Ví dụ: Ta có hai số nguyên a = 4 và b = 5, vậy BCNN của a và b là 20 vì 20 vừa chia hết cho 4 và vừa chia hết cho 5.

Tìm bội chung nhỏ nhất trong C# bằng vòng lặp while

Đầu tiên ta cần khai báo hai biến a và b là hai số cần tìm bội chung nhỏ nhất, biến bCNN là bội chung nhỏ nhất. Sau đó yêu cầu người dùng nhập vào hai số cần tìm CBNN.

Bài viết này được đăng tại [kiso.vn]

Code trong C# như sau:

//khai báo biến a, b là hai số cần tìm BCNN, bCNN là bội chung nhỏ nhất
int a, b, bCNN;
//yêu cầu người dùng nhập vào hai số càn tìm BCNN
Console.Write("n Nhap vao so thu nhat: ");
a = Convert.ToInt32(Console.ReadLine());
Console.Write("n Nhap vao so thu hai: ");
b = Convert.ToInt32(Console.ReadLine());

Như các bạn đã biết thì BCNN luôn lớn hơn hoặc bằng hai số a và b. Vì vậy mình sẽ sử dụng toán tử ba ngôi để tìm ra số lớn hơn giữa a và b để gán cho biến bCNN. Điều này sẽ giảm bớt thời gian khi phải bắt đầu tìm từ 1.

//sử dụng toán tử ba ngôi để tìm số lớn hơn giữa a và b sau đó gán cho biến bCNN
//vì BCNN luôn lớn hơn hoặc bằng a và b
bCNN = (a > b) ? a : b;

Sử dụng vòng lặp while() để tìm BCNN bắt đầu từ số lớn nhất trong hai số a và b đã tìm ở trên.

//sử dụng vòng lặp while với điều kiển true, lặp đến khi gặp lệnh Break để kết thúc vòng lặp
while (true)
{
    //nếu bCNN chia hết cho cả a và b thì bCNN chính là bội chung nhỏ nhất của a và b
    if (bCNN % a == 0 && bCNN % b == 0)
    {
        Console.WriteLine("n Boi chung nho nhat cua {0} va {1} la {2}", a, b, bCNN);
        break;
    }
    //sau mỗi vòng lặp sẽ tăng bCNN lên 1, cho đến khi tìm đưuọc BCNN
    bCNN++;
}

Full code:

using System;

namespace BaiTapCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            //khai báo biến a, b là hai số cần tìm BCNN, bCNN là bội chung nhỏ nhất
            int a, b, bCNN;
            //yêu cầu người dùng nhập vào hai số càn tìm BCNN
            Console.Write("n Nhap vao so thu nhat: ");
            a = Convert.ToInt32(Console.ReadLine());
            Console.Write("n Nhap vao so thu hai: ");
            b = Convert.ToInt32(Console.ReadLine());
            //sử dụng toán tử ba ngôi để tìm số lớn hơn giữa a và b sau đó gán cho biến bCNN
            //vì BCNN luôn lớn hơn hoặc bằng a và b
            bCNN = (a > b) ? a : b;
            //sử dụng vòng lặp while với điều kiển true, lặp đến khi gặp lệnh Break để kết thúc vòng lặp
            while (true)
            {
                //nếu bCNN chia hết cho cả a và b thì bCNN chính là bội chung nhỏ nhất của a và b
                if(bCNN % a == 0 && bCNN % b == 0)
                {
                    Console.WriteLine("n Boi chung nho nhat cua {0} va {1} la {2}", a, b, bCNN);
                    break;
                }
                //sau mỗi vòng lặp sẽ tăng bCNN lên 1, cho đến khi tìm đưuọc BCNN
                bCNN++;
            }

            Console.WriteLine("n-----Chuong trinh nay duoc dang tai Kiso.vn---");
        }
    }
}

Kết quả:

bai35 01 png

Tìm bội chung nhỏ nhất trong C# bằng UCLN

Việc tìm bội chung nhỏ nhất bằng ước chung lớn nhất cũng được thực hiện tương tự như trên. Chỉ cần áp dụng công thức:

BCNN = (số thứ nhất * số thứ hai) / UCLN

Sử dụng vòng lặp for để tìm ra UCLN của hai số sau đó áp dụng công thức để tính BCNN.

using System;

namespace BaiTapCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            //khai báo biến a, b là hai số cần tìm BCNN, bCNN là bội chung nhỏ nhất và uCLN là ước chung lớn nhất
            int a, b, bCNN, uCLN = 1;
            //yêu cầu người dùng nhập vào hai số càn tìm BCNN
            Console.Write("n Nhap vao so thu nhat: ");
            a = Convert.ToInt32(Console.ReadLine());
            Console.Write("n Nhap vao so thu hai: ");
            b = Convert.ToInt32(Console.ReadLine());
            //sử dụng vòng lặp for để tìm ước chung lớn nhất
            for(int i = 1; i <= a && i < b; i++)
            {
                if(a % i == 0 && b % i == 0)
                {
                    uCLN = i;
                }
            }
            //tính BCNN = (số thứ nhất * số thứ 2) / UCLN
            bCNN = (a * b) / uCLN;
            Console.WriteLine("n Boi chung nho nhat cua {0} va {1} la {2}", a, b, bCNN);

            Console.WriteLine("n-----Chuong trinh nay duoc dang tai Kiso.vn---");
        }
    }
}

Kết quả:

bai35 02 png

Như vậy là chúng ta đã tìm hiểu xong cách tìm bội chung nhỏ nhất trong C#. Đây là bài tập căn bản để các bạn có thể làm quen với ngôn ngữ lập trình. Vì vậy hãy luyện tập thật nhiều nhé, chúc các bạn thành công !!!

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *