Я пытался найти решение, с помощью которого я могу найти GCD из 2 чисел наиболее оптимальным способом, поэтому мне нужна помощь, чтобы выяснить, работает ли программа, которую я выпустил, для всех возможных случаев или в любом случае она сломается. или я могу улучшить его, чтобы сделать его оптимальным решением.
Программа:
public static void main(String[] args) {
int a= 153;
int b= 81;
boolean flag = true;
int gcd = 1;
while(flag)
{
if(a>b && a%b ==0)
{
flag = false;
gcd = b;
}
else if(b>a && b%a ==0)
{
flag=false;
gcd = a;
}
else if( a>b)
a = a-b;
else
b = b-a;
}
System.out.println(gcd);
}
Пожалуйста, помогите мне найти правильное решение, заранее спасибо.