求问关于java通过代码实现求最大公约数的方法(纠错)

package demo;
	
import java.util.Scanner;

public class Demo2_7{
	public static int gongyueshu(int x,int y)
	{
		int count=0;
		if(x>y)
		{
			x=(x%y);
			if(x==0)
			{
				return y;
			}
		}
		else
		{
			y=(y%x);
			if(y==0)
			{
				return x;
			}
		}
		while(x%y!=0 && y%x!=0)
		{
			if(count==666)//当运行次数过多即判断为无有效的最大公约数
			{
				System.out.println("这两个数为素数");
				return 1;			
				}
			gongyueshu(x,y);//进行递归运算来实现辗转相除法求最大公约数
			count++;
		}
	if(x>y)
		return x;
	else
		return y;
	}
	
	 
	public static void main(String[] args) {
		 Scanner in = new Scanner(System.in);
		 System.out.println("请依次输入要进行求取最大公约数的两个数");
		 System.out.println("现在请输入要第一个数");
		 int a = in.nextInt();
		 System.out.println("现在请输入要第二个数");
		 int b = in.nextInt();
		 System.out.println(a+"和"+b+"的最大公约数为:"+gongyueshu(a,b));
	}
}

我写的代码只能算简单的最大公约数,但是复杂一些就不行了,debug发现gongyueshu这个方法运行之后不会跳出来,我已经懵了,所以求各位大哥帮帮我(也许是我不会用debug功能........都是英文)

这就是个算法问题啊,简单说就是个数学问题啊。求最大公约数,辗转相除法

public static int gongyueshu(int x,int y){
    if(x<y) {
        int k=x;
        x=y;
        y=k;
    }
    return x%y == 0?y:gongyueshu(y,x%y);
}

还有连续整数检测 公因数(更相减损)

剩下两种自己百度看下。

这个你在网站里搜一下有很多种方法来求