Học Python - Bài 86 Viết hàm tìm UCLN
Giới Thiệu
Ước chung lớn nhất (UCLN) của hai số nguyên dương là số nguyên dương lớn nhất chia hết cho cả hai số đó. Bài viết này hướng dẫn hai cách viết một hàm Python để tìm UCLN của hai số nguyên dương: cách thông thường và cách tối ưu hóa sử dụng thư viện có sẵn.
Cách Thực Hiện
Cách 1: Sử dụng thuật toán Euclid (Cách thông thường)
def tim_ucln_thuong(a, b): while b != 0: a, b = b, a % b return a
Cách 2: Sử dụng thư viện math (Cách tối ưu hóa)
Python cung cấp hàm math.gcd() giúp tính UCLN nhanh chóng và tối ưu hơn.
import math
def tim_ucln_toi_uu(a, b):
return math.gcd(a, b)
Chương Trình Hoàn Chỉnh
import math
def tim_ucln_thuong(a, b):
while b != 0:
a, b = b, a % b
return a
def tim_ucln_toi_uu(a, b):
return math.gcd(a, b)
# Nhập hai số nguyên dương
a = int(input("Nhập số nguyên dương a: "))
b = int(input("Nhập số nguyên dương b: "))
# Kiểm tra và hiển thị kết quả
if a > 0 and b > 0:
print(f"UCLN theo cách thường của {a} và {b} là: {tim_ucln_thuong(a, b)}")
print(f"UCLN theo cách tối ưu của {a} và {b} là: {tim_ucln_toi_uu(a, b)}")
else:
print("Vui lòng nhập hai số nguyên dương hợp lệ.")
Ví Dụ Chạy Chương Trình
Nhập số nguyên dương a: 56
Nhập số nguyên dương b: 98
UCLN theo cách thường của 56 và 98 là: 14
UCLN theo cách tối ưu của 56 và 98 là: 14
So Sánh Hai Cách
| Phương pháp | Ưu điểm | Nhược điểm |
| Thuật toán Euclid | Không cần thư viện ngoài, dễ hiểu | Hiệu suất chậm hơn khi dùng thư viện |
| math.gcd() | Nhanh, tối ưu, tận dụng tối đa Python | Phụ thuộc vào thư viện math |
Kết Luận
Cả hai cách đều cho kết quả chính xác. Nếu bạn muốn hiểu rõ thuật toán, hãy sử dụng cách 1. Nếu muốn viết mã nhanh và tối ưu hơn, hãy sử dụng math.gcd(). Hy vọng bài viết hữu ích cho bạn!
Kính thưa quý phụ huynh và các bạn học sinh thân mến! Trong kỷ nguyên…
Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học THCS Bình Phước 2019-2020 Bằng…
Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Dương…
Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Phước…
Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Định…
Hướng Dẫn Giải Chi Tiết Đề Thi HSG Tin Học Lớp 9 Tỉnh Bình Định…