¿Cómo encontrar el máximo divisor común?

1. Encuentre el divisor entre 1 ~ m / 2, el divisor final es el máximo común divisor

public class Case25_GreatestCommonDivisor{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入两个正整数:");
		int m = in.nextInt();
		int n = in.nextInt();
		
		int gcd = 1;
		if(m>n)		//交换,确保m为较小者
		{
			m = m^n;
			n = m^n;
			m = m^n;
		}
		if(m == n || n%m == 0)
		{
			System.out.printf("%d与%d的最大公约数是%d\n",m,n,m);
			System.exit(0);
		}
		//找约数,最后的即最大公约数
		for(int i = 1; i <= m/2; i++)
			if(m%i==0 && n%i==0)
				gcd = i;
		System.out.printf("%d与%d的最大公约数是%d\n",m,n,gcd);
	}
}

2. Encuentre el divisor entre m / 2 ~ 1 y salga del bucle cuando lo encuentre

for(int i = m/2; i > 0; i--)
    if(m%i==0 && n%i==0)
    {
	  gcd = i;
      break;
    }

3. Algoritmo euclidiano (método de división de fase inversa)

public class Case25_GreatestCommonDivisor{
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("请输入两个正整数:");
		int m = in.nextInt();
		int n = in.nextInt();
		
		if(m>n)		//交换,确保m为较小者
		{
			m = m^n;
			n = m^n;
			m = m^n;
		}
		
		while(n%m != 0)
		{
			int temp = m;
			m = n%m;
			n = temp;
		}
		System.out.printf("%d与%d的最大公约数是%d\n",m,n,m);	
	}
}
Publicado 23 artículos originales · elogiado 7 · visitas 1988

Supongo que te gusta

Origin blog.csdn.net/weixin_44641176/article/details/100107392
Recomendado
Clasificación