STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

C++ - Tìm ước chung lớn nhất của 2 số nguyên được nhập từ bàn phím

Viết một chương trình tìm ước chung lớn nhất của 2 số nguyên được nhập từ bàn phím

Bài giải

-------------------- ######## --------------------

Theo trang Wikipedia: Số nguyên a chia hết cho số nguyên b thì số nguyên b được gọi là ước của số nguyên a. Số nguyên dương b lớn nhất là ước của cả hai số nguyên a và b, thì b được gọi là ước số chung lớn nhất (ƯCLN) của a và b.

Trong trường hợp: 

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
  • Cả hai số nguyên a và b đều bằng 0 thì chúng không có ước chung lớn nhất.
  • Nếu một trong hai số a và b bằng 0, thì ƯCLN của a và b bằng giá trị tuyệt đối của số khác 0.

Cách giải bài toán trên như sau:

  • Nhập 2 số nguyên từ bàn phím, ta gọi 2 biến lần lượt là so1 và so2
  • Nếu cả hai số đều bằng 0 thì in ra màn hình không có ước chung lớn nhất
  • Nếu so1 khác 0 và so2 bằng 0 thì so1 là ước chung là ước chung lớn nhất
  • Nếu so1 bằng 0 và so2 khác 0 thì so2 là ước chung là ước chung lớn nhất
  • Tìm số nhỏ nhất trong 2 số, ta gọi đó là min 
  • Sử dụng vòng lặp for lặp từ 1 đến min, tìm ước lớn nhất của so1 va so2 bằng nhau. Các bạn có thể xem lại tìm ước của một số nguyên riêng lẻ ở bài tập trước.

Chúng ta sẽ giải bài toán trên bằng cách sử dụng vòng lặp for trong C++ như sau:

#include <cmath>
#include <iostream>
using namespace std;

int main() {
    int i, so1, so2, min, ucln = 1;

    cout << "Nhap so thu nhat: ";
    cin >> so1;
    cout << "Nhap so thu hai: ";
    cin >> so2;
    if(so1 == 0 && so2 == 0) {
        cout << "Hai so 0 khong co uoc chung lon nhat" << endl;
    } else if (so1 != 0 && so2 == 0) {
        cout << "Uoc chung lon nhat cua " << so1 << " va " << so2 << " la " << abs(so1) << endl;
    } else if (so1 == 0 && so2 != 0) {
        cout << "Uoc chung lon nhat cua " << so1 << " va " << so2 << " la " << abs(so2) << endl;
    } else {
        if(so1 < so2) {
            min = so1;
        } else {
            min = so2;
        }
        
        for(int i = 1; i <= min; i++) {
            if(so1%i == 0 && so2%i == 0) {
                ucln = i;
            }
        }
        cout << "Uoc chung lon nhat cua " << so1 << " va " << so2 << " la " << ucln << endl;
    }
    return 0;
}

Và kết quả sau khi thực thi chương trình trên như sau:

Khi nhập số thứ nhất là 6 và số thứ hai là 8:
ex for 1 JPG

Khi nhập số thứ nhất là 3 và số thứ hai là 5:

ex for 2 JPG

Khi nhập số thứ nhất là 12 và số thứ hai là 30:

ex for 3 JPG

Khi nhập cả hai số bằng 0:

ex for 4 JPG

Khi nhập số thứ nhất là 0 và số thứ hai là 5:

ex for 5 JPG

Khi nhập số thứ nhất là -7 và số thứ hai là 0:

ex for 6 JPG

Trong chương trình trên chúng ta có sử dụng hàm abs đây là hàm xây dựng sẳn trong C++ để lấy giá trị tuyệt đối của một số. Ở bài này chúng ta chưa cần biết khái niệm hàm là gì đâu nhé, mình một bài để nói riêng về hàm trong C++.

7. Bài tập vòng lặp for trong C++

Cùng chuyên mục:

Cách nhân hai số trong ngôn ngữ C

Cách nhân hai số trong ngôn ngữ C

Cách cộng hai số nguyên trong C

Cách cộng hai số nguyên trong C

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Tổng hợp hơn 1000 bài tập C / C++ có lời giải

Bài này sẽ tổng hợp hơn 1000 bài tập C / C++ có lời giải…

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện ctime C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cstdio C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cctype C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstring C / C++

Các hàm trong thư viện cstdlib C/C++

Các hàm trong thư viện cstdlib C/C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm nhập xuất IO (iostream) trong C / C++

Các hàm toán học (math) trong C / C++

Các hàm toán học (math) trong C / C++

Nếu bạn đang học C++ căn bản thì phải biết công dụng của những hàm…

Bài tập vòng lặp while và do while trong C++

Bài tập vòng lặp while và do while trong C++

Nếu một bài toán được giải bằng vòng lặp while thì bạn hoàn toàn có…

Bài tập vòng lặp for trong C++ có lời giải

Bài tập vòng lặp for trong C++ có lời giải

Vòng lặp for C++ rất quan trọng, nó được sử dụng rất nhiều khi xử…

Bài tập if else trong C++ (có đổi sang switch case)

Bài tập if else trong C++ (có đổi sang switch case)

Để thành thạo hai lệnh rẻ nhánh if else và switch case thì bạn phải…

Tìm hiểu cấu trúc mảng (array) trong C++

Tìm hiểu cấu trúc mảng (array) trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi trong C++

Toán tử ba ngôi thực ra là cách rút gọn code của lệnh if else,…

Các toán tử trong C++

Các toán tử trong C++

Toán tử đóng vai trò rất quan trọng trong lập trình, nó giúp chúng ta…

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

Ngôn ngữ C++ là gì? Dùng làm gì trong công nghệ thông tin?

C++ là một ngôn ngữ lập trình phổ biến và mạnh mẽ có kiểu dữ…

Đọc ghi file trong C

Đọc ghi file trong C

Đa số sinh viên Việt Nam học lập trình C là để luyện tư duy…

Kiểu Union trong C

Kiểu Union trong C

Union có cách khai báo giống như struct, nhưng kích thước của nó sẽ lấy…

Hàm đệ quy trong ngôn ngữ C

Hàm đệ quy trong ngôn ngữ C

Giải thuật đệ quy nói chung và trong ngôn ngữ C nói riêng thì hàm…

Top