Đây là đoạn code bài giải:
#include<conio.h>
#include<stdio.h>
int ucln(int a,int b);
void main()
{
clrscr();
int a,b,kq;
printf("Nhap so nguyen a,b: ");
scanf("%d %d",&a,&b);
kq=ucln(a,b);
printf("UCLN cua 2 so la: %d",kq);
getch();
}
int ucln(int a,int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
Trọng tâm của bài này nằm ở hàm ucln(a,b) mà ta xây dựng để giải quyết vấn đề. Trong hàm này có sử dụng 1 số thủ thuật toán học, ở đây mình chỉ hướng dẫn chạy tay trên giấy để các bạn nắm được cách chương trình hoạt động cho dễ làm bài:
Chạy thử trên giấy, nhập vào 2 số 12 và 18. Hàm ucln(a,b) sẽ xử lý như sau:
Lần lặp 1: 12 khác 18
12<18--> b = 18-12 = 6
Lần lặp 2: 12 khác 6
12>6 --->a = 12-6 = 6
Lần lặp 3: 6 = 6 --> chương trình dừng vòng lặp và trả về giá trị a = 6
Kết quả đến đây ta đã tìm được UCLN cần tìm là 6.
Chúc các bạn thành công!
+ nhận xét + 4 nhận xét
rất hay ở phần chú thích , cảm ơn !
@Phạm Quyết Thắng, cảm ơn phản hồi từ bạn
Sử dụng đệ qui để viết hàm tìm ước số chung lớn nhất của 2 số
giúp mjk với mấy ae
Đăng nhận xét