Thuật Toán Bội Chung Nhỏ Nhất

Khóa học Lập trình Lập trình C++ Bài toán kinh điển trong lập trình Tìm ước số chung lớn nhất và bội số chung nhỏ nhất của a và b
*

Mục tiêu

Làm quen cách viết các chương trình đơn giản, cách sử dụng:

Mô tả bài toán

Viết chương trình nhập vào 2 số nguyên dương a và b. Tìmước số chung lớn nhấtbội số chung nhỏ nhất của a và b.

Bạn đang xem: Thuật toán bội chung nhỏ nhất

Ví dụ:

Input:a = 30 b = 40 Output:UCLN = 10 BCNN = 120

Hướng dẫn

Định nghĩa

Ước chung lớn nhấtcủa hai số nguyên a và b là số nguyên dương lớn nhất màavàb chia hết.

Bội số chung nhỏ nhấtcủa hai số nguyên a và b là số nguyên dương nhỏ nhất chia hết cho cảavàb.

Thuật toán

ƯCLN của hai số có thể tìm được bằng việc phân tích hai số đó ra thừa số nguyên tố. Nhưng có 1 phương pháp tối ưu nhất là sử dụngthuật toán Eucliddựa trên dãy liên tiếp các phép chia có dư.

Ví dụ: Tínhước số chung lớn nhấtcủa 91 và 287.

Trước hết lấy 287 (số lớn hơn trong 2 số)chiacho91:

287 =91*3 +14(91 & 14 sẽ được dùng cho vòng lặp kế)

Nhận xét: bất kỳ số nào chia hết bởi 287 và 91 cũng sẽchia hếtbởi 287 - 91*3 = 14. Tương tự,số chiahết bởi 91 và 14 cũng chia hết bởi 91*3 + 14 = 287. Do đó, ƯSCLN(91,287) = ƯSCLN(91,14). Bài toán trở thành tìm ƯSCLN(91,14). Lặp lạiquy trìnhtrên cho đến khiphép chiakhông cònsố dưnhư sau:

91 =14*6 +7(14 & 7 sẽ được dùng cho vòng lặp kế)

14 =7*2 (không còn số dư, kết thúc, nhận7làm kết quả)

Cuối cùng ta có: 7 = ƯSCLN(7,0) = ƯSCLN(14,7) = ƯSCLN(91,14) = ƯSCLN(287,91).

Xem thêm: Phim Lan Quế Phường 2 Full Hd, Lan Quế Phường 2, Lan Kwai Fong 2 2012

BCNN của a, b được tính dựa trên UCLN của 2 số đó theo công thức:

*

Bài tậpmang tính tham khảo, hỗ trợ các bạn làm quen và luyện tập với các bàn toán lập trình cơ bản trong C++.

Kteamkhuyến khích các bạn tựphân tích đề bài > tự giải bài toán > debugđể kiểm tra kết quả và fix lỗi trong quá trình giải. Sau đó, bạn có thể tham khảosource codemẫu để hoàn chỉnh bài tập.

Để được hỗ trợ tốt nhất, bạn có thể đặt câu hỏi ở phầnbình luậnbên dưới bài viết hoặc ở mụcHỏi & Đáp.


Source code tham khảo

#include using namespace std;// Cho 2 số nguyên dương a và b. Hãy tìm ước chung lớn nhất của 2 số này.// Input : 2 số a,b// Output : Ước chung lớn nhất của 2 số a, bint UCLN(int a, int b){ while ( a != b) { if (a > b) a = a - b; else b = b - a; } return a; // or return b; a = b}// Cho 2 số nguyên dương a và b. Hãy tìm bội chung nhỏ nhất của 2 số này// Input : 2 số a,b// Output : Bội chung nhỏ nhấtint BCNN(int a, int b){ int result = UCLN(a, b); return a * b / result;}int main(){ int a, b; cout > a; cout > b; int result = UCLN(a, b); cout

Kết luận

Bạn có thể củng cố kiến thức C++ từ khóa Lập trình C++ cơ bản.

Hoặc tìm hiểu thêm các bài tập khác trong khóa Bài toán kinh điển trong lập trình

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên“Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện baoveangiang.com.com để nhận được sự hỗ trợ từ cộng đồng.