01/10/2018, 10:30

Giúp tìm lỗi code ước chung lớn nhất

#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 
");
    scanf("%d",&a);
    ptintf("nhap b 
");
    scanf("%d",&b);
    c=ucln(a,b);
    printf("uoc chung lon nhat la %d",c);
    return 0;
}
Henry viết 12:44 ngày 01/10/2018

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.

rogp10 viết 12:41 ngày 01/10/2018

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.

DNKT viết 12:35 ngày 01/10/2018

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.

Nguyen Ngoc Nam viết 12:42 ngày 01/10/2018

à em hiểu rồi cảm ơn anh ạ

Bài liên quan
0