Tìm ước số chung lớn nhất của 2 số nguyên dương a và b nhập từ bàn phím
Đề bài: nhập 2 số nguyên dương a,b. Tính ước số chung lớn nhất và bội chung nhỏ nhất của a,b. Bài giải: Cách 1: #include int main(){ int a,b,uc,bc; printf("Nhap (a,b): "); scanf("%d%d",&a,&b); for (uc=a;uc>=1;uc--){ if (a%uc==0 && b%uc==0){ printf("UCLN(%d,%d)=%d\n",a,b,uc); break for (bc=a;bc<=a*b;bc++){ if (bc%a==0 && bc%b==0){ printf("BCNN(%d,%d)=%d\n",a,b,bc); break return 0; } Cách 2: int UCLN(int a,int b){ if (a%b!=0) return UCLN(b,a%b); b; } BCNN(int a,int b){ return (a*b)/UCLN(a,b); } main(){ int a,b,ucln,bcnn; printf("Nhap (a,b): "); scanf("%d%d",&a,&b); ucln = UCLN(a,b); printf("UCLN(%d,%d)=%d\n",a,b,ucln); bcnn = BCNN(a,b); printf("BCNN(%d,%d)=%d\n",a,b,bcnn); return 0; }
86 / 100 Trong bài viết này tôi sẽ cùng các bạn tìm hiểu về các thuật toán tìm ước chung lớn nhất của hai số nguyên và minh họa code bằng ngôn ngữ C/C++. Định nghĩa ước chung lớn nhất Ước chung lớn nhất (GCD – Greatest Common Divisor) của 2 số nguyên a và b là số nguyên lớn nhất d thỏa mãn tính chất cả a và b đều chia hết cho d. Các thuật toán tìm ước chung lớn nhấtDưới đây là một số cách thường được sử dụng để giải quyết bài toán tìm ước chung lớn nhất của hai số. Cách 1. Tìm UCLN sử dụng phép trừĐây là sơ đồ của thuật toán này Thuật toán tìm ước chung lớn nhất sử dụng phép trừCode minh họa
Giải thích:
Xem thêm: Các chia sẻ hay được đúc kết từ kinh nghiệm của tác giả Cách 2. Tìm UCLN sử dụng phép chia dưSơ đồ thuật toán tương tự như cách 1. Chỉ thay đổi phép trừ sang phép chia dư. Code minh họa
Cách 3. Tìm UCLN sử dụng giải thuật EuclidCho a, b là hai số nguyên (giả sử a ≥ b), để tìm ước chung lớn nhất của hai số a và b ta cần thực hiện chia a cho b được thương q và số dư r (r ≥ 0) tức là a = b*q + r, khi đó ta có: Cài đặt thuật toán sử dụng đệ quy.
Cài đặt khử đệ quy
Gợi ý: Một số bài viết về giải thuật tương tự Cách 4. Tìm UCLN sử dụng hàm có sẵn của C++Để có thể sử dùng hàm tìm ucln trong C++ ta cần thêm thư viện algorithm. Ví dụ minh họa:
Tổng kết tất cả cách cách trên trong 1 chương trình.
Kết quả chạy thử
Trên đây tôi đã trình bày chi tiết về các thuật toán tìm ước chung lớn nhất của hai số. Nếu bạn đọc quan tâm hay có thắc mắc gì. Vui lòng để lại ở bình luận phía cuối bài viết. Nếu bạn quan tâm đến tìm BCNN của 2 số, vui lòng chuyển qua bài viết tìm BCNN của 2 số nhé. |