最大の公約数を見つける方法は?

1. 1〜m / 2の間の除数を見つけます。最後の除数は最大公約数です

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. m / 2〜1の間の除数を見つけ、見つかったらループを終了します

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

3.ユークリッドアルゴリズム(逆相分割法)

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);	
	}
}
元の23の記事を公開 賞賛7 1988年の訪問

おすすめ

転載: blog.csdn.net/weixin_44641176/article/details/100107392