Giải thích 1 dòng trong hàm tính ước chung lớn nhất

E có đoạn code tìm ucln và bcnn, mn cho giải thích giùm e đoạn này e ko hiểu.

if(a > b) a-=b; else b-=a;

em cảm ơn ạ

import java.util.Scanner;
public class bai1 {
    public static int ucln(int a, int b)
    {
        if(a == 0 || b == 0)    return a + b;
        while(a != b)
        {
            if(a > b)   a-=b;
            else    b-=a;
        }
        return a;
    }
    public static int bcnn(int a, int b)
    {
        int ans = ucln(a,b);
        return a * b / ans;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Nhap a: ");
        int a = sc.nextInt();
        System.out.print("Nhap b: ");
        int b = sc.nextInt();
        System.out.print("1.Tinh UCLN\n2.Tinh BCNN\nMoi ban nhap so: ");
        int n = sc.nextInt();
        switch(n)
        {
            case 1:
                System.out.println("UCLN cua "+a+" va "+b+" la: " +ucln(a,b));
                break;
            case 2:
                System.out.println("BCNN cua "+a+" va "+b+" la: " + bcnn(a,b));
                break;
        }
    }
}

UCLN(a, b) = UCLN(a \pm b, b) :slight_smile:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?