06/05/2025
06/05/2025
Nguyên ThiChắc chắn rồi, đây là một bài viết hoàn chỉnh về chủ đề viết chương trình nhập hai số tự nhiên m, n từ bàn phím và đưa ra kết quả là UCLN của hai số này:
Chương trình tìm ước chung lớn nhất (UCLN) của hai số tự nhiên
Trong toán học và lập trình, việc tìm ước chung lớn nhất (UCLN) của hai số tự nhiên là một bài toán cơ bản nhưng có nhiều ứng dụng quan trọng. UCLN của hai số là số lớn nhất chia hết cho cả hai số đó. Bài viết này sẽ trình bày cách viết một chương trình đơn giản để nhập hai số tự nhiên từ bàn phím và tính UCLN của chúng bằng thuật toán Euclid.
1. Thuật toán Euclid
Thuật toán Euclid là một phương pháp hiệu quả để tìm UCLN của hai số. Thuật toán này dựa trên nguyên lý: UCLN của hai số không thay đổi nếu số lớn hơn được thay thế bằng hiệu của nó và số nhỏ hơn. Quá trình này lặp lại cho đến khi hai số bằng nhau, và số đó chính là UCLN.
Ví dụ, để tìm UCLN của 24 và 18:
* 24 - 18 = 6
* 18 - 6 = 12
* 12 - 6 = 6
* 6 = 6
Vậy UCLN của 24 và 18 là 6.
Một cách khác để thực hiện thuật toán Euclid là sử dụng phép chia lấy dư. Thay vì trừ, ta chia số lớn cho số nhỏ và lấy số dư. Số nhỏ trở thành số lớn mới, và số dư trở thành số nhỏ mới. Quá trình này lặp lại cho đến khi số dư bằng 0. Số nhỏ cuối cùng chính là UCLN.
Ví dụ, để tìm UCLN của 24 và 18:
* 24 chia 18 dư 6
* 18 chia 6 dư 0
Vậy UCLN của 24 và 18 là 6.
2. Viết chương trình
Dưới đây là một chương trình mẫu viết bằng ngôn ngữ Python để nhập hai số tự nhiên từ bàn phím và tính UCLN của chúng bằng thuật toán Euclid:
```python
def ucln(a, b):
while(b):
a, b = b, a % b
return a
Nhập hai số từ bàn phím
m, n = map(int, input("Nhập hai số tự nhiên m và n, cách nhau bởi dấu cách: ").split())
Tính UCLN
ket_qua = ucln(m, n)
In kết quả
print("UCLN của", m, "và", n, "là:", ket_qua)
```
Trong chương trình này:
* Hàm `ucln(a, b)` nhận hai số `a` và `b` làm đầu vào và trả về UCLN của chúng.
* Vòng lặp `while(b)` tiếp tục cho đến khi `b` bằng 0.
* Trong mỗi lần lặp, `a` và `b` được cập nhật bằng cách sử dụng phép gán đồng thời `a, b = b, a % b`. Điều này có nghĩa là `a` nhận giá trị của `b`, và `b` nhận giá trị của phần dư khi `a` chia cho `b`.
* Khi `b` bằng 0, `a` chứa UCLN của hai số ban đầu.
* Chương trình nhập hai số từ bàn phím bằng hàm `input()` và `split()`. Hàm `map(int, ...)` chuyển đổi các số nhập vào thành kiểu số nguyên.
* Cuối cùng, chương trình in kết quả ra màn hình.
3. Giải thích chi tiết
* Nhập dữ liệu: Hàm `input("Nhập hai số tự nhiên m và n, cách nhau bởi dấu cách: ")` hiển thị một thông báo yêu cầu người dùng nhập hai số tự nhiên, cách nhau bởi dấu cách. Hàm này trả về một chuỗi chứa hai số đã nhập.
* Tách chuỗi: Hàm `split()` được gọi trên chuỗi đã nhập để tách chuỗi thành một danh sách các chuỗi con, mỗi chuỗi con là một số. Ví dụ, nếu người dùng nhập "24 18", thì `split()` sẽ trả về `['24', '18']`.
* Chuyển đổi kiểu dữ liệu: Hàm `map(int, ...)` được sử dụng để chuyển đổi mỗi chuỗi con trong danh sách thành một số nguyên. Hàm `int()` được áp dụng cho mỗi phần tử trong danh sách, và kết quả là một đối tượng `map` chứa các số nguyên.
* Gán giá trị: Các số nguyên được gán cho hai biến `m` và `n` bằng cách sử dụng phép gán đồng thời `m, n = map(int, ...)`
* Tính UCLN: Hàm `ucln(m, n)` được gọi để tính UCLN của hai số `m` và `n`.
* In kết quả: Hàm `print("UCLN của", m, "và", n, "là:", ket_qua)` in kết quả ra màn hình.
4. Kết luận
Chương trình trên là một ví dụ đơn giản về cách sử dụng thuật toán Euclid để tìm UCLN của hai số tự nhiên. Bạn có thể mở rộng chương trình này để xử lý các trường hợp phức tạp hơn, chẳng hạn như tìm UCLN của nhiều hơn hai số, hoặc tìm BCNN (bội chung nhỏ nhất) của hai số.
06/05/2025
đây là code:
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN
Top thành viên trả lời