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 [free tuts .net]
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 Freetuts.net---"); } } }
Kết quả:
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:
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 Freetuts.net---"); } } }
Kết quả:
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 !!!