#include <stdio.h>
#include <stdlib.h>
int ucln(int a,int b)
{
while(a!=b)
{
if(a>b)
a-=b;
if(b>a)
b-=a;
}
return a;
}
int main()
{
int a,b,c;
printf("nhap a \n");
scanf("%d",&a);
ptintf("nhap b \n");
scanf("%d",&b);
c=ucln(a,b);
printf("uoc chung lon nhat la %d",c);
return 0;
}
Giúp tìm lỗi code ước chung lớn nhất
Bạn format code lại cho dễ đọc bằng cách
```
Code của bạn
```
Về code thì code tìm ước chung lớn nhất của bạn có một số vấn đề. Bạn có thể tham khảo ước là gì, sau đó tìm ước chung thế nào rồi mới tới tìm hiểu ước chung lớn nhất.
1 Like
Thớt nên đọc lại mô tả thuật toán.
Nguyên lí của nó là:
- gcd(0, a) = a (lưu ý lcm(0, a) = 0)
- gcd(a, b) = gcd(a-b, b) NẾU a>=b
vì vậy chỉ có 1 trong 2 trường hợp.
2 Likes
Trong vòng while dùng 2 lần if là sai phải dùng if else vì
lần 1: vô chay lệnh if thứ nhất a >b -> ok. Sau đó, trình biên dịch tiếp tục chạy xuống dòng if thứ 2 lúc này giả sử b >a rồi thì nó sẽ vô if tiếp để thực hiện -> sai thuật toán.
1 Like
à em hiểu rồi cảm ơn anh ạ