Viết chương trình nhập vào hai số nguyên a, b. Tìm ước chung lớn nhất của a và b
Quảng cáo
3 câu trả lời 93
Để tìm ước chung lớn nhất (UCLN) của hai số nguyên aaa và bbb, bạn có thể sử dụng thuật toán Euclid, một phương pháp nhanh và hiệu quả. Dưới đây là chương trình C++ để nhập vào hai số nguyên aaa và bbb, và tính UCLN của chúng.
cpp
Sao chép
#include <iostream>
using namespace std;
// Hàm tính UCLN của a và b sử dụng thuật toán Euclid
int ucln(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b; // Lấy phần dư của a chia cho b
a = temp; // Gán b vào a
}
return a; // Khi b = 0, a chính là UCLN
}
int main() {
int a, b;
// Nhập vào hai số nguyên a và b
cout << "Nhập vào số nguyên a: ";
cin >> a;
cout << "Nhập vào số nguyên b: ";
cin >> b;
// Tính và in ra UCLN của a và b
cout << "Ước chung lớn nhất của " << a << " và " << b << " là: " << ucln(a, b) << endl;
return 0;
}
Giải thích chương trình:
Hàm ucln: Hàm này sử dụng thuật toán Euclid để tính UCLN của hai số aaa và bbb. Quy trình là lặp đi lặp lại phép chia lấy dư cho đến khi phần dư là 0. Khi đó, giá trị của aaa chính là UCLN của hai số ban đầu.
Hàm main: Trong hàm này, chương trình sẽ yêu cầu người dùng nhập vào hai số nguyên aaa và bbb, sau đó gọi hàm ucln để tính và in ra kết quả.
Ví dụ:
Giả sử bạn nhập:
less
Sao chép
Nhập vào số nguyên a: 24
Nhập vào số nguyên b: 36
Kết quả sẽ là:
r
Sao chép
Ước chung lớn nhất của 24 và 36 là: 12
Thuật toán Euclid:
Thuật toán Euclid là một phương pháp cổ điển để tìm UCLN của hai số. Cách hoạt động của thuật toán là chia lấy dư của aaa cho bbb, rồi thay aaa bằng bbb và bbb bằng phần dư cho đến khi b=0b = 0b=0. Khi đó aaa chính là UCLN của aaa và bbb.
Dưới đây là chương trình Python để nhập vào hai số nguyên aaa và bbb, sau đó tìm ước chung lớn nhất (UCLN) của chúng bằng thuật toán Euclid:
python
Sao chépChỉnh sửa
def ucln(a, b):
while b != 0:
a, b = b, a % b
return abs(a)
# Nhập hai số nguyên từ bàn phím
a = int(input("Nhập số nguyên a: "))
b = int(input("Nhập số nguyên b: "))
# Tìm và in ra UCLN
print("Ước chung lớn nhất của", a, "và", b, "là:", ucln(a, b))
🛠 Cách hoạt động của chương trình:
Hàm ucln(a, b) sử dụng thuật toán Euclid, lặp lại việc lấy phần dư cho đến khi phần dư bằng 0.
Người dùng nhập hai số nguyên aaa và bbb.
Chương trình tính và hiển thị UCLN của chúng.
🔥 Ví dụ chạy chương trình:
less
Sao chépChỉnh sửa
Nhập số nguyên a: 24
Nhập số nguyên b: 36
Ước chung lớn nhất của 24 và 36 là: 12
Để tìm ước chung lớn nhất (UCLN) của hai số nguyên aaa và bbb, chúng ta có thể sử dụng thuật toán Euclid. Dưới đây là một ví dụ về chương trình Python để thực hiện điều này:
Copy def ucln(a, b):
while b != 0:
a, b = b, a % b
return abs(a) # Trả về giá trị tuyệt đối của UCLN
# Nhập hai số nguyên từ người dùng
try:
a = int(input("Nhập số nguyên a: "))
b = int(input("Nhập số nguyên b: "))
print("Ước chung lớn nhất của", a, "và", b, "là:", ucln(a, b))
except ValueError:
print("Vui lòng nhập số nguyên hợp lệ.")
Giải thích chương trình:
Hàm ucln(a, b):
Sử dụng thuật toán Euclid để tính UCLN. Trong đó, a % b là phép lấy phần dư khi chia aaa cho bbb.
Cứ lặp lại quá trình này cho đến khi b=0b = 0b=0. Khi đó, aaa chính là UCLN.
Sử dụng abs(a) để đảm bảo UCLN là giá trị dương.
Nhập liệu:
Chương trình yêu cầu người dùng nhập hai số nguyên aaa và bbb.
Nơi try - except giúp xử lý các lỗi nếu người dùng nhập dữ liệu không hợp lệ (không phải số nguyên).
Bạn có thể chạy đoạn mã trên trong một môi trường Python để kiểm tra kết quả.
Quảng cáo